Jump to content

monyet

Members
  • Posts

    27
  • Joined

  • Last visited

Posts posted by monyet

  1. 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

    • Love 2
  2. 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 ^^

    • Upvote 1
    • Love 1
  3. 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 ^^

  4. 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 ^^ 

  5. 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;
    }

     

  6. 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 

  7. 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

    ternak.png

     

    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 funmerchantroute.thumb.png.0d4e9f3a07e8f19826309612e18a1643.png

    • Love 1
  8. 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

     

  9. 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 

  10. bagaimana script saya yang ini apakah bisa di buat lebih sederhana lagi ?

     

    Quote

    prontera,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;
    }
     

     

  11. 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 

  12. 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

  13. 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

  14. 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.

  15. 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 server

    2. 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

  16. 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.

×
×
  • Create New...