-
Posts
27 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by monyet
-
-
for test all file on folder debug, but you need download Stud_PE for inject to file exe ^^ and im still work many feature for this server anti cheat, and alot change for feature.
I need help about all cheat for ragnarok online, name a program, and and name progses please if you have, please give to me
-
2
-
-
GretelHS not complet for 100%, because all still basic setup
-
This project was created as a learning experience to understand how game anti-cheat systems work — from basic concepts to a complete implementation that can run standalone or be integrated with a game client like Ragnarok Online.
With the help of AI , open documentation, and real-world code references, GarudaHS has officially been completed for basic version.
Source Code:
https://github.com/Hansel38/GarudaHS
Feedback, suggestions, or bug reports are very welcome — feel free to open an issue or contribute via PR!
Credits
Special thanks and inspiration go to:
https://github.com/Pokye/Sagaan-AntiCheat-V2.0
Big respect for the open-source contribution that helped kickstart this journey.
Asli Jatuh Bangun buat beginian, ternyata susah banget, bahkan gw sempat berkali kali mau nyerah tapi gw mau coba berusaha pokoknya harus jadi hehehe thanks all ^^-
1
-
1
-
-
On 7/28/2020 at 11:55 PM, Penicilina said:
Hi
As it has been stated this seems rather complex as it is more than just a couple of NPCs, but I'm interested nonetheless. I can help you develop and implement such system, at least in the early stages as my scripting knowledge may come short at some point. But first I need to know: do you have any means for testing this stuff? Because I don't really have free access to a server myself and this will obviously require a lot of trial and error.
Regards
yes i have local server for test ^^ for make this feature its hard but i make it step by step ^^
-
21 hours ago, Racaae said:
I'm not sure this is what you asked. You can copy the NPC to put in another map, there are 3 examples. The item data is in the .items array.
//===== rAthena Script ======================================= //= Idea Economic Model //===== By: ================================================== //= monyet //============================================================ // NPC: Abas Eden Group (NPC Penjual Item Konsumsi) morocc,172,86,5 script Abas 56,{ mes "[Abas]"; mes "Berikut adalah harga pembelian kami saat ini:"; ShowSellItemList(strnpcinfo(0)); next; ChooseSellItem(strnpcinfo(0)); close; OnInit: //<Item ID>, <Minimum Price>, <Maximum Price>, setarray .items, 12041,200,2500, //Fried Grasshopper Legs 12051,150,2550, //Steamed Crab Nippers 12056,200,2500, //Frog Egg Squid Ink Soup 12066,200,2500, //Fried Monkey Tails 12042,200,2500, //Seasoned Sticky Webfoot 12052,200,2500, //Assorted Seafood 12057,200,2500, //Smooth Noodle 12043,200,2500, //Bomber Steak 12053,200,2500, //Clam Soup 12058,200,2500, //Tentacle Cheese Gratin 12068,200,2500, //Fried Sweet Potato 12054,200,2500, //Seasoned Jellyfish 12059,200,2500, //Lutie Cold Noodle 12069,200,2500, //Steamed Ancient Lips 12070,200,2500; //Fried Scorpion Tails bindatcmd "resetpricesmorocc",strnpcinfo(3) + "::OnReset",99,99; .size = getarraysize(.items); donpcevent strnpcinfo(0)+"::OnReset"; end; OnTimer3600000: OnReset: stopnpctimer(); .@npc = getnpcid(0); for ( .@i = 0; .@i < .size; .@i += 3 ) { setd "$@" + .@npc + "last" + .items[.@i], getd("$@" + .@npc + "_" + .items[.@i]); setd "$@" + .@npc + "_" + .items[.@i], rand(.items[.@i+1], .items[.@i+2]); } initnpctimer(); announce "Pedagang Grup Eden Morocc: Harga telah diperbarui! Silakan cek barang yang ingin dijual.", bc_all; end; } // NPC: Abas Veins (NPC Penjual Item ratna) morocc,172,90,3 script Abas#veins 1_M_SIGNMCNT,{ mes "[Abas]"; mes "Saya akan membeli batu langka apa pun yang Anda temukan saat menambang."; if (getgroupid() >= 99) mes " ", "^808080@resetpricesveins^000000 untuk memaksa pengaturan ulang."; next; switch(select("Pembelian harga saat", "Penjual")) { case 1: mes "[Abas]"; mes "Berikut adalah harga pembelian kami saat ini:"; ShowSellItemList(strnpcinfo(0)); break; case 2: ChooseSellItem(strnpcinfo(0)); break; } close; OnInit: //<Item ID>, <Minimum Price>, <Maximum Price>, setarray .items, 718,3000,6000, //Garnet 719,3000,6000, //Amethyst 720,3000,6000, //Aquamarine 721,2500,4500, //Emerald 722,3000,6000, //Pearl 723,2500,4500, //Ruby 725,3000,6000, //Sardonyx 726,2500,4500, //Sapphire 727,3000,6000, //Opal 728,2500,4500, //Topaz 729,2500,4500, //Zircon 969,2000,3500, //Gold 714,10000,20000; //Emperium bindatcmd "resetpricesveins",strnpcinfo(3) + "::OnReset",99,99; .size = getarraysize(.items); donpcevent strnpcinfo(0)+"::OnReset"; end; OnMinute20: OnReset: stopnpctimer(); .@npc = getnpcid(0); for ( .@i = 0; .@i < .size; .@i += 3 ) { setd "$@" + .@npc + "last" + .items[.@i], getd("$@" + .@npc + "_" + .items[.@i]); setd "$@" + .@npc + "_" + .items[.@i], rand(.items[.@i+1], .items[.@i+2]); } initnpctimer(); announce "Pedagang Veins: Harga telah diperbarui! Silakan cek barang yang ingin dijual.", bc_all; end; } // NPC: Abas Rachel (NPC Penjual Item) morocc,170,89,3 script Abas#rachel 935,{ mes "[Abas]"; mes "Kuil tersebut mencari artefak terkutuk untuk pemurnian nanti."; if (getgroupid() >= 99) mes " ", "^808080@resetpricesrachel^000000 untuk memaksa pengaturan ulang."; next; switch(select("Pembelian harga saat", "Penjual")) { case 1: mes "[Abas]"; mes "Berikut adalah harga pembelian kami saat ini:"; ShowSellItemList(strnpcinfo(0)); break; case 2: ChooseSellItem(strnpcinfo(0)); break; } close; OnInit: //<Item ID>, <Minimum Price>, <Maximum Price>, setarray .items, 1761,50,200, //Cursed Arrow 724,200,600, //Cursed Ruby 6004,8000,10000, //Cursed Baphomet Doll 12020,1000,2000, //Cursed Water 2728,50000,60000; //Cursed Hand bindatcmd "resetpricesrachel",strnpcinfo(3) + "::OnReset",99,99; .size = getarraysize(.items); donpcevent strnpcinfo(0)+"::OnReset"; end; OnMinute40: OnReset: stopnpctimer(); .@npc = getnpcid(0); for ( .@i = 0; .@i < .size; .@i += 3 ) { setd "$@" + .@npc + "last" + .items[.@i], getd("$@" + .@npc + "_" + .items[.@i]); setd "$@" + .@npc + "_" + .items[.@i], rand(.items[.@i+1], .items[.@i+2]); } initnpctimer(); announce "Pedagang Kuil Rachel: Harga telah diperbarui! Silakan cek barang yang ingin dijual.", bc_all; end; } // NPC: Abas Hugel (NPC Penjual Item) morocc,176,90,3 script Abas#hugel 4_M_HUOLDARMY,{ mes "[Abas]"; mes "Halo! Saya membeli barang-barang lokal untuk mendukung pertanian di Hugel."; if (getgroupid() >= 99) mes " ", "^808080@resetpriceshugel^000000 untuk memaksa pengaturan ulang."; next; switch(select("Pembelian harga saat", "Penjual")) { case 1: mes "[Abas]"; mes "Berikut adalah harga pembelian kami saat ini:"; ShowSellItemList(strnpcinfo(0)); break; case 2: ChooseSellItem(strnpcinfo(0)); break; } close; OnInit: //<Item ID>, <Minimum Price>, <Maximum Price>, setarray .items, 519,50,100, //Milk 574,50,100, //Egg 518,100,200, //Honey 577,100,200, //Grain 1026,100,200, //Acorn 581,100,200, //Edible Mushroom 515,100,200, //Carrot 516,100,200, //Sweet Potato 535,100,200, //Pumpkin 517,150,300, //Meat 919,80,100; //Animal Skin bindatcmd "resetpriceshugel",strnpcinfo(3) + "::OnReset",99,99; .size = getarraysize(.items); donpcevent strnpcinfo(0)+"::OnReset"; end; OnMinute00: OnReset: stopnpctimer(); .@npc = getnpcid(0); for ( .@i = 0; .@i < .size; .@i += 3 ) { setd "$@" + .@npc + "last" + .items[.@i], getd("$@" + .@npc + "_" + .items[.@i]); setd "$@" + .@npc + "_" + .items[.@i], rand(.items[.@i+1], .items[.@i+2]); } initnpctimer(); announce "Pedagang Hugel: Harga telah diperbarui! Silakan cek barang yang ingin dijual.", bc_all; end; } // Function ShowSellItemList - Tampilkan daftar barang yang dijual function script ShowSellItemList { .@npc = getnpcid(0, getarg(0)); .@size = getvariableofnpc( .size, getarg(0)); copyarray .@items[0], getvariableofnpc( .items[0], getarg(0)), .@size; for ( .@i = 0; .@i < .@size; .@i += 3 ) { .@item_id = .@items[.@i]; .@old_price = getd("$@" + .@npc + "last" + .@items[.@i]); .@price = getd("$@" + .@npc + "_" + .@items[.@i]); if (.@price > .@old_price && .@old_price) setarray .@c$,"^008000","/\\"; else if (.@price < .@old_price) setarray .@c$,"^FF0000","\\/"; mes mesitemlink(.@item_id, false) + ": " + .@c$[0] + F_InsertComma(.@price) + " Z " + .@c$[1] + "^000000"; } return; } // Function ChooseSellItem - periksa inventaris untuk barang yang akan dijual function script ChooseSellItem { disable_items; .@npc = getnpcid(0, getarg(0)); explode(.@npcname$, getarg(0), "#"); .@size = getvariableofnpc( .size, getarg(0)); copyarray .@items[0], getvariableofnpc( .items[0], getarg(0)), .@size; for (.@i = 0; .@i < .@size; .@i+=3) { if (countitem(.@items[.@i]) > 0) { .@menu$ += "^0000FF" + getitemname(.@items[.@i]) + "^000000:"; .@menuindex[.@count++] = .@i; } } if (.@count == 0) { mes "[" + .@npcname$[0] + "]"; mes "Anda tidak memiliki salah satu item yang diterima."; mes "Kembali lagi ketika Anda memiliki sesuatu untuk dijual."; close; } mes "[" + .@npcname$[0] + "]"; mes "Apa yang ingin kamu jual?"; mes "Silakan pilih item yang ingin kamu jual."; .@selected = .@menuindex[select(.@menu$ + "Tidak Jadi") - 1]; clear; if (.@selected < .@count) { mes "[" + .@npcname$[0] + "]"; mes "Baik, mungkin lain kali."; close; } callfunc "SellItem", .@items[.@selected], getd("$@" + .@npc + "_" + .@items[.@selected]), getitemname(.@items[.@selected]); return; } // 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; }
thanks alot, then next script from base this script i will make trade City To City ^^
-
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; }
-
On 7/29/2020 at 12:03 AM, buraquera said:
npcshopitem "<name>",<item id>,<price>{,<item id>,<price>{,<item id>,<price>{,...}}}; This command lets you override the contents of an existing NPC shop or cashshop. The current sell list will be wiped, and only the items specified with the price specified will be for sale. The function returns 1 if shop was updated successfully, or 0 if not found. NOTES: - That you cannot use -1 to specify default selling price! - If attached shop type is market shop, need an extra param after price, it's <qty> and make sure don't add duplication item! --------------------------------------- *npcshopadditem "<name>",<item id>,<price>{,<item id>,<price>{,<item id>,<price>{,...}}}; This command will add more items at the end of the selling list for the specified NPC shop or cashshop. If you specify an item already for sell, that item will appear twice on the sell list. The function returns 1 if shop was updated successfully, or 0 if not found. NOTES: - That you cannot use -1 to specify default selling price! - If attached shop type is market shop, need an extra param after price, it's <qty> and make sure don't add duplication item! --------------------------------------- *npcshopdelitem "<name>",<item id>{,<item id>{,<item id>{,...}}}; This command will remove items from the specified NPC shop or cashshop. If the item to remove exists more than once on the shop, all instances will be removed. Note that the function returns 1 even if no items were removed. The return value is only to confirm that the shop was indeed found. ---------------------------------------
Just a correction. You may use those commands to help you with the script.
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.-
1
-
-
update this script please
-
can update this script because i have some conflic
-
Question : At modification this script have a mistake ? i want all player give buff soul linker
//===== rAthena Script ======================================= //= Healer //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Basic healer script. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Aligned coordinates with @go. //============================================================ - script Healer -1,{ .@Price = 0; // Zeny required for heal .@Buffs = 1; // Buff players (1: enabled permanently) .@Delay = 0; // Heal delay, in seconds if (@HD > gettimetick(2)) end; if (.@Price) { message strcharinfo(0), "Healing costs " + callfunc("F_InsertComma", .@Price) + " Zeny."; if (Zeny < .@Price) end; if (select("^0055FFHeal^000000:^777777Cancel^000000") == 2) end; Zeny -= .@Price; } // Heal effect specialeffect2 EF_HEAL2; percentheal 100, 100; // Apply buffs: Increase Agility and Blessing specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI, 240000, 10; specialeffect2 EF_BLESSING; sc_start SC_BLESSING, 240000, 10; // Class-specific Soul Links switch(Class) { case Job_Alchemist: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_ALCHEMIST; // Alchemist Spirit@jo break; case Job_Monk: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_MONK; // Monk Spirit break; case Job_Sage: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_SAGE; // Sage Spirit break; case Job_Crusader: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_CRUSADER; // Crusader Spirit break; case Job_Knight: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_KNIGHT; // Knight Spirit break; case Job_Wizard: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_WIZARD; // Wizard Spirit break; case Job_Priest: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_PRIEST; // Priest Spirit break; case Job_Bard: case Job_Dancer: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_BARDDANCER; // Bard and Dancer Spirit break; case Job_Rogue: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_ROGUE; // Rogue Spirit break; case Job_Assassin: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_ASSASSIN; // Assassin Spirit break; case Job_Blacksmith: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_BLACKSMITH; // Blacksmith Spirit break; case Job_Hunter: specialeffect2 EF_SOULLINK; sc_start SC_SPIRIT, 240000, SL_HUNTER; // Hunter Spirit break; } // Delay handling if (.@Delay) @HD = gettimetick(2) + .@Delay; end; } // Duplicates //============================================================ alberta,25,240,6 duplicate(Healer) Healer#alb 909 aldebaran,135,118,6 duplicate(Healer) Healer#alde 909 amatsu,200,79,4 duplicate(Healer) Healer#ama 909 ayothaya,207,169,6 duplicate(Healer) Healer#ayo 909 comodo,184,158,6 duplicate(Healer) Healer#com 909 einbech,57,36,6 duplicate(Healer) Healer#einbe 909 einbroch,57,202,6 duplicate(Healer) Healer#einbr 909 geffen,115,72,6 duplicate(Healer) Healer#gef 909 gonryun,156,122,6 duplicate(Healer) Healer#gon 909 hugel,89,150,6 duplicate(Healer) Healer#hug 909 izlude,121,150,6 duplicate(Healer) Healer#izl 909 //Pre-RE: (125,118) jawaii,250,139,4 duplicate(Healer) Healer#jaw 909 lighthalzen,152,100,6 duplicate(Healer) Healer#lhz 909 louyang,226,103,4 duplicate(Healer) Healer#lou 909 manuk,272,144,6 duplicate(Healer) Healer#man 909 mid_camp,203,289,6 duplicate(Healer) Healer#mid 909 moc_ruins,72,164,4 duplicate(Healer) Healer#moc 909 morocc,153,97,6 duplicate(Healer) Healer#mor 909 moscovia,220,191,4 duplicate(Healer) Healer#mos 909 niflheim,212,182,5 duplicate(Healer) Healer#nif 909 payon,179,106,4 duplicate(Healer) Healer#pay 909 prontera,162,193,4 duplicate(Healer) Healer#prt 909 rachel,125,116,6 duplicate(Healer) Healer#rac 909 splendide,201,153,4 duplicate(Healer) Healer#spl 909 thor_camp,249,74,4 duplicate(Healer) Healer#thor 909 umbala,105,148,3 duplicate(Healer) Healer#umb 909 veins,217,121,4 duplicate(Healer) Healer#ve 909 xmas,143,136,4 duplicate(Healer) Healer#xmas 909 yuno,164,45,4 duplicate(Healer) Healer#yuno 909 // Duplicates (Renewal) //============================================================ brasilis,194,221,6 duplicate(Healer) Healer#bra 909 dewata,195,187,4 duplicate(Healer) Healer#dew 909 dicastes01,201,194,4 duplicate(Healer) Healer#dic 909 ecl_in01,45,60,4 duplicate(Healer) Healer#ecl 909 malangdo,132,114,6 duplicate(Healer) Healer#mal 909 malaya,227,204,6 duplicate(Healer) Healer#ma 909 mora,55,152,4 duplicate(Healer) Healer#mora 909
-
2 hours ago, Racaae said:
Halo
//===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6c //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //= 1.6c Replaced function 'A_An' with "F_InsertArticle". //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; // ADD YOUR NPC HERE //============================================================ prontera,152,180,5 script NamaNPC 4_F_JPN2,{ callfunc "qshop",1; } //============================================================ // Script Core - DO NOT DUPLICATE THIS NPC !!!!!!!!!!!!! //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. .SkipShop = true; // Ignore shop window .Chance = 80; // Success chance // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0], "#CASHPOINTS", "Cash Points"; //===================================================================================== // ------------------- ADD YOUR SHOPS NAME AND ITEMS SHOPS STARTING HERE -------------- //===================================================================================== // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1], "Food", // Shop Named 1 "Other"; // Shop Named 2 // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- // Shop 1 Add(1,12046,1,0,0,501,2,514,3); Add(1,12061,1,0,0,501,1,514,2,518,1); Add(1,12047,1,0,0,507,10,508,10,510,5); Add(1,12048,1,0,0,509,10,518,2,7452,1); Add(1,12044,1,0,0,507,3,508,2,511,3,568,1,517,5,7453,1); Add(1,12065,1,0,0,520,2,521,3,7100,10,7198,6,7453,1,7452,1); Add(1,12060,1,0,0,7006,20,520,10,507,10,1062,20,7482,1); Add(1,12055,1,0,0,553,20,508,10,511,20,7455,1,7456,1); // ----------------------------------------------------------- //===================================================================================== // ------------------- YOUR SHOPS AND ITEMS SHOPS HAVE BEEN ADDED --------------------- //===================================================================================== freeloop(0); set .menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qshop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set @shop_index, select(.menu$); else if (.@size == 1) set @shop_index, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set @shop_index, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[@shop_index] == "") { message strcharinfo(0),"An error has occurred."; end; } if (!.SkipShop) { dispbottom "Select one item at a time."; callshop "qshop"+@shop_index,1; npcshopattach "qshop"+@shop_index; end; } mes "[NamaNPC]"; mes "Halo, Aku adalah NPC contoh."; mes "Apa yang ingin kamu buat?"; //for (.@i = 0;.@i < getarraysize(getd(".q_list_"+@shop_index));.@i++) // mes "- " + mesitemlink(getd(".q_list_"+@shop_index+"["+ .@i + "]")); .@menu$ = ""; for (.@i = 0;.@i < getarraysize(getd(".q_list_"+@shop_index));.@i++) .@menu$ += getitemname(getd(".q_list_"+@shop_index+"["+ .@i + "]")) + ":"; .@s = select(.@menu$) - 1; setarray .@q[0],getd(".q_list_"+@shop_index+"["+ .@s + "]"),1; copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0])); clear; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } if (!.SkipShop) { setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0])); } mes "[NamaNPC]"; set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { mes "You can't purchase that many "+getitemname(.@q[0])+"."; close; } mes "Untuk membuat"; //mes "^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"") + mesitemlink(.@q[0]) + "^000000, kamu membutuhkan:"; disable_items; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) { for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) { //mes (.@q[.@i+2]?"":"dan ") + Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000" + (.@q[.@i+2]?",":"."); mes (.@q[.@i+2]?"":"dan ") + Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+mesitemlink(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000" + (.@q[.@i+2]?",":"."); } } setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOCATIONS), getiteminfo(.@q[0], ITEMINFO_VIEW); if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT))) set .@preview,1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select("Membuat ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+":^777777Membatalkan^000000")) { case 1: mes "[NamaNPC]"; if (@qe[0]) { mes "Kamu tidak memiliki bahan yang cukup."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0], ITEMINFO_WEIGHT))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; if (rand(100) >= .Chance) { mes "Pembuatan " + getitemname(.@q[0]) + " gagal!"; close; } getitem .@q[0],.@q[2]; mes "Berhasil membuat " + getitemname(.@q[0]) + "!"; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); .@ii = getarraysize(getd(".q_list_"+getarg(0))); setarray getd(".q_list_"+getarg(0)+"["+.@ii+"]"),getarg(1); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } } function script qshop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1
Temukan bagian ini untuk menambahkan lebih banyak item:
Add(1,12046,1,0,0,501,2,514,3); Add(1,12061,1,0,0,501,1,514,2,518,1); Add(1,12047,1,0,0,507,10,508,10,510,5); Add(1,12048,1,0,0,509,10,518,2,7452,1); Add(1,12044,1,0,0,507,3,508,2,511,3,568,1,517,5,7453,1); Add(1,12065,1,0,0,520,2,521,3,7100,10,7198,6,7453,1,7452,1); Add(1,12060,1,0,0,7006,20,520,10,507,10,1062,20,7482,1); Add(1,12055,1,0,0,553,20,508,10,511,20,7455,1,7456,1);
terimakasih banyak saya bisa menambah pengetahuan saya soal scriptnya
1 hour ago, Harvin said:menurut saya dengan teknik dasar itu sudah cukup bagus, ya walau pengulangan yg harus anda lakukan adalah kelemahannya.
untuk teknik yg lebih advanced pengulangan code dapat di hilangkan seperti yg disebutkan di atas hanya butuh menambah beberapa line semua beres sebagain new entry.
walau ada sedikit perbedaan jika langsung menggunakan equphy quest shop untuk script yg anda lampirkan di atas, anda akan kehilangan aspect chance.
ok saya akan praktekan, saya sangat terbantu sekali dengan penjelasannya
-
bagaimana script saya yang ini apakah bisa di buat lebih sederhana lagi ?
Quoteprontera,152,180,5 script NamaNPC 757,{
mes "Halo, Aku adalah NPC contoh.";
mes "Apa yang ingin kamu buat?";
switch(select("Grape Juice Herbal Tea:Honey Grape Juice:Autumn Red Tea:Honey Herbal Tea:Herb Marinade Beef:Green Salad:Steamed Bat Wing in Pumpkin:Spicy Fried Bao")) {
case 1:
mes "Untuk membuat Grape Juice Herbal Tea, kamu membutuhkan: 2 Red Potion dan 3 Grape.";
if (countitem(501) >= 2 && countitem(514) >= 3) {
delitem(501, 2);
delitem(514, 3);
if (rand(100) < 80) {
getitem(12046, 1);
mes "Berhasil membuat Grape Juice Herbal Tea!";
} else {
mes "Pembuatan Grape Juice Herbal Tea gagal!";
}
} else mes "Kamu tidak memiliki bahan yang cukup.";
break;
case 2:
mes "Untuk membuat Honey Grape Juice, kamu membutuhkan: 1 Red Potion, 2 Grape, dan 1 Honey.";
if (countitem(501) >= 1 && countitem(514) >= 2 && countitem(518) >= 1) {
delitem(501, 1);
delitem(514, 2);
delitem(518, 1);
if (rand(100) < 80) {
getitem(12061, 1);
mes "Berhasil membuat Honey Grape Juice!";
} else {
mes "Pembuatan Honey Grape Juice gagal!";
}
} else mes "Kamu tidak memiliki bahan yang cukup.";
break;
case 3:
mes "Untuk membuat Autumn Red Tea, kamu membutuhkan: 10 Red Herb, 10 Yellow Herb, dan 5 Blue Herb.";
if (countitem(507) >= 10 && countitem(508) >= 10 && countitem(510) >= 5) {
delitem(507, 10);
delitem(508, 10);
delitem(510, 5);
if (rand(100) < 80) {
getitem(12047, 1);
mes "Berhasil membuat Autumn Red Tea!";
} else {
mes "Pembuatan Autumn Red Tea gagal!";
}
} else mes "Kamu tidak memiliki bahan yang cukup.";
break;
case 4:
mes "Untuk membuat Honey Herbal Tea, kamu membutuhkan: 10 White Herb, 2 Honey, dan 1 Yellow Spice.";
if (countitem(509) >= 10 && countitem(518) >= 2 && countitem(7452) >= 1) {
delitem(509, 10);
delitem(518, 2);
delitem(7452, 1);
if (rand(100) < 80) {
getitem(12048, 1);
mes "Berhasil membuat Honey Herbal Tea!";
} else {
mes "Pembuatan Honey Herbal Tea gagal!";
}
} else mes "Kamu tidak memiliki bahan yang cukup.";
break;
// jika setiap menambah item baru saya akan menambah lagi maksudnya mengulang ulang script lagi apa ada cara lain kah ?
}
close;
}
-
13 hours ago, Harvin said:
ini bisa saja di lakukan dengan advanced script technique, anda bisa ambil referensi dari euphy script (quest shop) yg menggunakan dynamic variable setter dan getter dengan script command setd dan getd.
memang agak sedikit sulit, jika anda ingin mencobanya bisa saja.saya rasa, saya mencoba yang dasar dulu saja >.< dan pelan pelan step by step
-
36 minutes ago, hendra814 said:
mungkin bisa contek script ini
aku akan mencobanya XD
-
28 minutes ago, hendra814 said:
ini buat script untuk player bisa buat quest untuk dikerjakan player lain?
bener jadi player nanti melihat kan dari semua perusahaan terdaftar mana yang paling banyak memberikan gaji , nah player sebagai pekerja dia akan memainkan mini game contohnya roulet atau tiktakto ataupun yang lain untuk minigamenya. Hingga nanti uang deposit yang di masukan oleh player selaku owner perusahaan habis uangnya dan ia wajib mengisi kembali ke npc tersebut
-
5 minutes ago, hendra814 said:
Dear @monyet
setau saya tidak bisa, kalau mau pakai item lain harus dibuat ulang dan diganti item ID nya.
ok deh kalo begitu, sekarang lagi nyoba script selanjutnya
NPC Embiroc Factory // namanya XD
- saat berinteraksi NPC , NPC akan meminta nama perusahaan
- Npc akan meminta barang apa yang hendak di produksi ( sesuai dengan list item yang tersedia )
- Deposit zeni untuk membayar gaji Karyawan ( karyawan disini adalah player lain )
- Bisa melihat list Perusahaan berapa gaji yang di berikan ( untuk pekerja )
- Item hasil produksi akan di kirim lewat E-mail
- Karyawan mendapatkan gaji setelah dia selesai main mini game ( rencana menggunakan slot machine )
- Item hasil produksi itu random
- Perusahaan yang bisa di daftarkan 1 player 1 aja, trus untuk ke seluruhan hanya ada 30 slot
- pajak penghasilan tiap minggu berubah max 11 persen
- jumblah hasil prokduksi random
- Barang hasil produksi bisa di jual ke player lain, npc , atau npc Eden Group
rencananya si gitu ternyata sulit juga buatnya tapi tetap gw lakuin, dan nanti mohon bantuanya dalam koreksi ^^ Hendra dan Harvin -
Terimakasih banyak @hendra814 udah sangat terbantu
Apakah mungkin jika npcnya saya cloning dan npc yang lain bisa jual item yagn berbeda ? -
apa yang anda perbaiki saya sangat terlolong dan sangat berterimakasih, lalu disini saya menambhakn beberapa script untuk broadcaster global setiap perubahan harga item dengan script sebagai brikut :
prontera,158,180,4 script Pedagang Grup Eden 100,{ mes "[VRO Asisten]"; mes "Halo! Apakah kamu ingin menjual Jellopy padaku? Saya membayar harga yang berbeda tergantung waktu!"; next; // Tampilkan harga yang saat ini ditawarkan mes "Saat ini, saya akan membeli Jellopy seharga "+.selected_price+" Zeny per buah."; announce "Pedagang Grup Eden: Harga Jellopy saat ini adalah " + .selected_price + " Zeny per buah!", bc_all; // Mengumumkan harga kepada semua pemain next; if (countitem(909) < 1) { mes "Tampaknya kamu tidak memiliki Jellopy!"; close; } mes "Berapa banyak Jellopy yang ingin kamu jual?"; .@selected_price = .selected_price; // Preserve price during user interaction input .@amount; if (.@amount <= 0 || .@amount > countitem(909)) { mes "Mohon masukkan jumlah yang valid!"; close; } .@total_price = .@amount * .selected_price; mes "Kamu akan mendapatkan "+ .@total_price +" Zeny untuk "+ .@amount +" Jellopy."; next; .@s = select("Jual:Ya,Tidak"); if (.@s == 1) { if (.@selected_price != .selected_price) { mes "Harga telah berubah, silahkan coba lagi!"; close; } delitem 909, .@amount; // Hapus Jellopy dari inventory pemain Zeny += .@total_price; // Berikan Zeny kepada pemain mes "Terima kasih telah menjual Jellopy-mu!"; } else { mes "Mungkin lain waktu!"; } close; OnInit: .selected_price = rand(1, 500); // Inisialisasi harga secara acak antara 1 dan 500 Zeny announce "Pedagang Grup Eden: Harga Jellopy saat ini adalah " + .selected_price + " Zeny per buah!", bc_all; // Mengumumkan harga awal kepada semua pemain initnpctimer(); end; OnTimer900000: // Perbarui harga setiap 15 menit. stopnpctimer(); .selected_price = rand(1, 500); announce "Pedagang Grup Eden: Harga Jellopy telah berubah! Harga baru adalah " + .selected_price + " Zeny per buah!", bc_all; initnpctimer(); end; }
tapi disini setelah saya coba, setiap saya klick npc akan broadcast harganya, dan saya ingin disini walau player berinteraksi dengan NPC tidak akan broadcast berapa harga saat ini kecuali saat harga berubah saja, tolong bantu saya dimana salahnya.
-
prontera,158,180,4 script VRO Asisten 100,{
// Inisialisasi
setarray .price[0], 10, 20, 30; // Array harga yang mungkin
mes "[VRO Asisten]";
mes "Halo! Apakah kamu ingin menjual Jellopy padaku? Saya membayar harga yang berbeda tergantung waktu!";
next;// Menetapkan harga acak dari array .price
set .selected_price, .price[rand(getarraysize(.price))];// Tampilkan harga yang saat ini ditawarkan
mes "Saat ini, saya akan membeli Jellopy seharga "+.selected_price+" Zeny per buah.";
next;// Cek apakah pemain memiliki Jellopy
if (countitem(909) > 0) {
mes "Berapa banyak Jellopy yang ingin kamu jual?";
input .amount;
if (.amount > 0 && .amount <= countitem(909)) {
// Hitung total zeny yang akan diterima pemain
.total_price = .amount * .selected_price;
mes "Kamu akan mendapatkan "+.total_price+" Zeny untuk "+.amount+" Jellopy.";
next;
if (select("Jual:Ya,Tidak") == 1) {
// Konfirmasi penjualan dan transaksi
delitem 909, .amount; // Hapus Jellopy dari inventory pemain
zeny += .total_price; // Berikan Zeny kepada pemain
mes "Terima kasih telah menjual Jellopy-mu!";
} else {
mes "Mungkin lain waktu!";
}
} else {
mes "Mohon masukkan jumlah yang valid!";
}
} else {
mes "Tampaknya kamu tidak memiliki Jellopy!";
}
close;
}
1. Disini saya pengen NPC akan merubah harga setiap 15 menit sekali sesuai waktu server2. Di mapserv consol have error npc_event: event not found [VRO asisten: :OnTimerUpdatePrice] Maksudnya ini apa ya dan apa disini maksudnya kita harus membuat npc_event kah ? atau bagaimana ?
Atas perhatianya terimakasih -
-
i have problem if im add friend at game and my char disconnect and then at my map server have warning like this : how to fix it
[Warning]: clif_parse: Received unsupported packet (packet 0x7461, 20 bytes received), disconnecting session #4.
[info]: Character 'Phearl' logged off.
[info]: 'Elise' logged in. (AID/CID: '2000004/150006', Packet Ver: '38', IP: '127.0.0.1', Group '0').
[Warning]: clif_parse: Received unsupported packet (packet 0x7461, 20 bytes received), disconnecting session #4.
[info]: Character 'Elise' logged off.
[info]: Character 'Kenwatanabe' logged off.
[Warning]: clif_parse: Received unsupported packet (packet 0x7461, 20 bytes received), disconnecting session #3.
[info]: Character 'Elise' logged off.
[info]: Character 'Kenwatanabe' logged off. -
semua atau hanya ada beberapa saja di file lua yang kita translate ??
-
Begini saya menggunakan KRO nah mengikuti tutorial dari
kemudian disini yang saya tanyakan saya mau rubah client saya ke Bhs indonesia itu gimana caranya agar semua yang ada di dalam game menjadi bahasa indonesia?? mohon pencerahanya
Learning Build And How Anti Cheat Work
in General Support
Posted · Edited by monyet
yup but im stil working at this GarudaHS at localhost my pc ^^