-
Posts
1188 -
Joined
-
Last visited
-
Days Won
17
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by hendra814
-
-
21 hours ago, hendra814 said:
Hi all, are rathena already have npc for honor token exchange?
i can't find the script at NPC folder
i need like this
i'm sorry check in game already have the npc but stll didn't find the script.
edit, found at npc/re/quest/quest_16-1
-
Hi all, are rathena already have npc for honor token exchange?
i can't find the script at NPC folder
i need like this
-
On 4/11/2024 at 6:27 PM, zeonronin said:
Hello, the script work well with Collection Quest, but the Hunting Quest doesnt increase the monster quote, the numbber doesnt update when i kill the targeted monster, any solution ?
try this 1.6.6 version
//===== rAthena Script ======================================= //= tr0n's Questboard //===== By: ================================================== //= tr0n //===== Current Version: ===================================== //= 1.6.6 //===== Description: ========================================= //= Easily add collection and hunting quests. //===== Changelogs: ========================================== // 1.0.0 Release // 1.1.0 Added zeny reward // 1.2.0 Rewrote checkmob and killcounter // 1.3.1 Added level restriction // 1.3.4 Added Reward Item Amount // 1.4.4 Added Quest delay // 1.5.4 Added repeatable Quests // 1.6.4 Added party support // 1.6.5 Bug fixes for party support // 1.6.6 Bug fixes for delay time does not appear [mazvi] //============================================================ prontera,159,192,4 script Questboard 4_BOARD3,{ if(c_run==true){ mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000"; mes "--------------------------------"; set .@size, getarraysize(getd("."+ currentquest$ + "_collectionitem")); for( set .@j, 0; .@j < .@size; set .@j,.@j+2){ mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; } mes "--------------------------------"; mes "[Reward]"; mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000"); mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000"; mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000"; mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000"; next; if(select("Finish:Abort") == 2){ mes "[^FF7700Questboard^000000]"; mes "Quest aborted."; set currentquest$, ""; set c_run, false; close; } goto L_checkitems; } if(h_run==true){ mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000"; mes "--------------------------------"; set .@size, getarraysize(getd("."+ currentquest$ + "_huntingmob")); for( set .@j, 0; .@j < .@size; set .@j,.@j+2){ set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]"); mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; } mes "--------------------------------"; mes "[Reward]"; mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000"); mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000"; mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000"; mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000"; next; if(select("Finish:Abort") == 2){ mes "[^FF7700Questboard^000000]"; mes "Quest aborted."; for(set .@x, 1; .@x < .@size; set .@x,.@x+2){ set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); } set currentquest$, ""; set h_run, false; close; } goto L_checkmobs; } mes "[^FF7700Questboard^000000]"; mes "Select category:"; next; switch(select((.collection)?"Collection Quests":"", (.hunting)?"Hunting Quests":"", "Exit")) { case 1: set .@collectmenu$, ""; for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1){ if (.@i) set .@collectmenu$,.@collectmenu$+":"; set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); } set .@selection,select(.@collectmenu$); if(.quest_repeat == true){ if(gettimetick(2) < getd(.@selection + "_collection_delay")){ mes "[^FF7700Questboard^000000]"; mes "You have to wait ^0000FF"+Time2Str(getd(.@selection + "_collection_delay"))+"^000000 to do this quest again."; close; } } else{ if(getd(.@selection + "_collection_repeat") == true){ mes "[^FF7700Questboard^000000]"; mes "You already did this quest."; mes "Please choose another one."; close; } } mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000"; mes "--------------------------------"; set .@size, getarraysize(getd("."+ .@selection + "_collectionitem")); for( set .@j, 0; .@j < .@size; set .@j,.@j+2){ mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; } mes "--------------------------------"; mes "[Reward]"; mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000"); mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000"; mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000"; mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000"; next; if(select("Accept:Decline") == 2){ close; } if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax")){ mes "[^FF7700Questboard^000000]"; mes "Quest accepted."; set c_run, true; set currentquest$, .@selection; close; } else{ mes "[^FF7700Questboard^000000]"; mes "You don't have the required"; mes "level to do this quest."; close; } case 2: set .@huntmenu$, ""; for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1){ if (.@i) set .@huntmenu$,.@huntmenu$+":"; set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); } set .@selection,select(.@huntmenu$); if(.quest_repeat == true){ if(gettimetick(2) < getd(.@selection + "_hunting_delay")){ mes "[^FF7700Questboard^000000]"; mes "You have to wait ^0000FF"+Time2Str(getd(.@selection + "_hunting_delay"))+"^000000 to do this quest again."; close; } } else{ if(getd(.@selection + "_hunting_repeat") == true){ mes "[^FF7700Questboard^000000]"; mes "You already did this quest."; mes "Please choose another one."; close; } } mes "[^FF7700Questboard^000000]"; mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000"; mes "--------------------------------"; set .@size, getarraysize(getd("."+ .@selection + "_huntingmob")); for( set .@j, 0; .@j < .@size; set .@j,.@j+2){ mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; } mes "--------------------------------"; mes "[Reward]"; mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000"); mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000"; mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000"; mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000"; next; if(select("Accept:Decline") == 2){ close; } if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax")){ mes "[^FF7700Questboard^000000]"; mes "Quest accepted."; set h_run, true; set currentquest$, .@selection; close; } else{ mes "[^FF7700Questboard^000000]"; mes "You don't have the required"; mes "level to do this quest."; close; } case 3: close; } L_checkitems: set .@size, getarraysize(getd("."+currentquest$+"_collectionitem")); for( set .@k,0; .@k < .@size; set .@k,.@k+2){ if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){ set .@checkitem,.@checkitem+2; } } if(.@checkitem<.@size){ mes "[^FF7700Questboard^000000]"; mes "You don't have everything."; close; } for( set .@delcount,0; .@delcount < .@size; set .@delcount,.@delcount+2){ delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]"); } mes "[^FF7700Questboard^000000]"; mes "Congratulation! Here is your Reward."; if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount")); set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny"); getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]"); setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay; setd(currentquest$ + "_collection_repeat"),true; set currentquest$, ""; set c_run, false; close; L_checkmobs: set .@size, getarraysize(getd("."+currentquest$+"_huntingmob")); set .@goal, .@size/2; for(set .@i, 1; .@i < .@size; set .@i,.@i+2){ set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){ set .@checkmonster, .@checkmonster+1; if(.@checkmonster==.@goal){ goto L_checkmobs2; } continue; } goto L_checkmobs2; } L_checkmobs2: if(.@checkmonster<.@goal){ mes "[^FF7700Questboard^000000]"; mes "You didn't kill everything."; close; } mes "[^FF7700Questboard^000000]"; mes "Congratulation! Here is your Reward."; set .@size, getarraysize(getd("."+currentquest$+"_huntingmob")); for(set .@x, 1; .@x < .@size; set .@x,.@x+2){ set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); } if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount")); set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny"); getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]"); setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay; setd(currentquest$ + "_hunting_repeat"),true; set currentquest$, ""; set h_run, false; close; OnNPCKillEvent: if(h_run!=true) end; set .@size, getarraysize(getd("."+currentquest$+"_huntingmob")); for(set .@i, 1; .@i < .@size; set .@i,.@i+2){ if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){ set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")<getd("."+currentquest$+"_huntingmob["+.@i+"]")){ setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1); dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")"; } if(getcharid(1) != 0 && .party_support == true){ getmapxy(.@map1$,.@x1,.@y1); set .@killerid, getcharid(3); set .@currentquest$, currentquest$; getpartymember getcharid(1),1; getpartymember getcharid(1),2; for(set .@j, 0; .@j < $@partymembercount; .@j++){ if(isloggedin($@partymemberaid[.@j], $@partymembercid[.@j])){ if(h_run==true && $@partymemberaid[.@j] != .@killerid && .@currentquest$ == getvar(currentquest$, $@partymembercid[.@j]) && readparam(HP, $@partymembercid[.@j]) > 0){ getmapxy(.@map2$,.@x2,.@y2,BL_PC,rid2name($@partymemberaid[.@j])); if(.@map1$ == .@map2$ && distance(.@x1,.@y1,.@x2,.@y2) < .party_range){ set .@kill_amt,getvar(getd(.@currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount"), $@partymembercid[.@j]); set .@kill_goal,getd("."+.@currentquest$+"_huntingmob["+.@i+"]"); if(.@kill_amt<.@kill_goal) { setd(.@currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", .@kill_amt+1, $@partymembercid[.@j]); dispbottom getd("."+.@currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+(.@kill_amt+1)+"/"+.@kill_goal+")", 0xB6FF00, $@partymembercid[.@j]; } } } } } } break; } } end; OnInit: function AddCollection; function AddHunting; //Activate/Deactivate quest categories (true/1 - activated, false/0 - deactivated) set .collection, true; set .hunting, true; //Quest Delay (seconds) //24 hours = 86400 seconds set .quest_delay, 0; //Activate/Deactivate repeatable quests (true/1 - activated, false/0 - deactivated) set .quest_repeat, true; //Activate/Deactivate party support (true/1 - activated, false/0 - deactivated) set .party_support, true; //Max range for party support (+- x & y coordinations) set .party_range, 25; //Checks if quests are loaded (prevents out of index) if(.questsloaded==true) end; set .questsloaded, true; //Add Collection Quests here (You can add as many required items as you want) //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); //Add Hunting Quests here (You can add as many required mobs as you want) //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); end; function AddCollection{ set .collectionquestcount,.collectionquestcount+1; setd ("." +.collectionquestcount+"_collectionname$", getarg(0)); setd ("." +.collectionquestcount+"_collectionmin", getarg(1)); setd ("." +.collectionquestcount+"_collectionmax", getarg(2)); setd ("." +.collectionquestcount+"_collectionprize", getarg(3)); setd ("." +.collectionquestcount+"_collectionamount", getarg(4)); setd ("." +.collectionquestcount+"_collectionzeny", getarg(5)); set .@argcount, 6; set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp")); setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount)); setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem")); while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1){ setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount)); setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount,.@argcount+2; set .@size, .@size+2; } return; } function AddHunting{ set .huntingquestcount,.huntingquestcount+1; setd ("." +.huntingquestcount+"_huntingname$", getarg(0)); setd ("." +.huntingquestcount+"_huntingmin", getarg(1)); setd ("." +.huntingquestcount+"_huntingmax", getarg(2)); setd ("." +.huntingquestcount+"_huntingprize", getarg(3)); setd ("." +.huntingquestcount+"_huntingamount", getarg(4)); setd ("." +.huntingquestcount+"_huntingzeny", getarg(5)); set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp")); set .@argcount, 6; setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount)); setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob")); while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1){ setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount)); setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1)); set .@argcount, .@argcount+2; set .@size, .@size+2; } return; } }
-
36 minutes ago, aleph075 said:
on wich .grf file? 4jobs.grf or data.grf?
Still dunno how the game could read a de encripted file, if you say "just copy it"
are 4jobs.grf your custom grf, i yes put the file at this grf.
try this step.
1 create data folder and put the file like this path data/luafiles514/lua files/skillinfoz/skilldescript.lub
2. open 4jobs.grf using grf application, here as example using grf editor, at your grf righ click than choose add
3. pick data folder directore point no 1
4. then click add, wait until the progress bar finished.
5. click file and then pick save.
- 1
-
11 hours ago, aleph075 said:
I have no data folder. I mean, my data folder is empty. So, should I download the archives of the data folder de encripted and then configure the server to read that.... ?
no, just put the file into your custom grf file
-
19 hours ago, Playtester said:
Official servers have a drop penalty on level difference, but many private server remove that "feature".
I only play on pre-renewal servers so not sure how many there are that actually have a drop penalty.
here the example drop rate from RO asia (Official Ragnarok Online by Gravity Game Hub (gnjoy.asia))
-
44 minutes ago, monyet said:
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
mungkin bisa contek script ini
-
48 minutes ago, monyet said:
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 Harvinini buat script untuk player bisa buat quest untuk dikerjakan player lain?
-
50 minutes ago, monyet said:
Terimakasih banyak @hendra814 udah sangat terbantu
Apakah mungkin jika npcnya saya cloning dan npc yang lain bisa jual item yagn berbeda ?Dear @monyet
setau saya tidak bisa, kalau mau pakai item lain harus dibuat ulang dan diganti item ID nya.
-
I think your client read GRF file instead of data folder, so you must import your modification data folder into your grf file.
- 1
-
9 hours ago, monyet said:
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.
Disable line no 7 ini saya bantu update scriptnya
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; }
-
for pvp point try using this, the point will change into roulette coin
- script PVPPOINTS -1,{ OnPCKillEvent: if ( getgmlevel() >= 60) { end; } set PVPPoint,PVPPoint+1; dispbottom "Gained 1 PVP Points. Total : "+ PVPPoint +" PVP Points."; end; } Welgaia,203,119,4 script PVP Point Trader 512,{ setarray $@pvprewitem[0], 671,673,675; mes "Do you want to trade your point to coin?"; mes "For 1 pvp point will get random 1 coin"; mes "You have "+ PVPPoint +" PVP Points."; switch(select("Yes:No")){ Case 1: if (PVPPoint <= 0) { next; mes "You don't have PVP point."; end; } next; mes "Here your random coin."; getitem $@pvprewitem[rand(0,getarraysize($@pvprewitem)-1)],1; set PVPPoint,PVPPoint-.point; close; Case 2: mes "ok bye"; close; } }
For PVP ladder and dota sound try use script at this download page on folder NPC
-
please check tis link. about cash shop. on latest rA - General Support - rAthena
-
using lastest rathena got issue, always failed refine event to +1
-
4 hours ago, seenmylove said:
Like this,but I want in NPC script do it
Like when I input 1002 or poring
NPC can let me choices go where and warp that
Sorry,my English too bad.
But thanks everyone who give me answer.
for this you can use navigation function, for 2021 client and newer already have this.
-
2 hours ago, Racaae said:
No, I did only these 2 cities as a example on how to update/add the recent boards.
ok, thanks for the information, i will look into lua file for another city.
-
9 hours ago, Racaae said:
Updated:
iRO 2024 OngoingQuestInfoList.lubAlso Rachel and Veins board NPCs:
rachel,87,73,0 script Bounty Board 80-100#rac1 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 80, 100, 20, 2, 1030, 63516, 697125, 697125, // ANACONDAQ 1782, 63517, 697125, 697125, // ROWEEN 1776, 63518, 697125, 697125; // SIROMA end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 80 && BaseLevel <= 100"); end; } rachel,89,73,0 script Bounty Board 100-120#rac2 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 100, 120, 20, 2, 1106, 63519, 270000, 202500, // DESERT_WOLF 1781, 63520, 202500, 151950, // DROSERA 1629, 63521, 285000, 213750, // HILL_WIND 1777, 63522, 408600, 396600, // ICE_TITAN 1775, 63523, 408600, 396600; // SNOWIER end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 100 && BaseLevel <= 120"); end; } rachel,91,73,0 script Bounty Board 120-140#rac3 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 120, 140, 20, 2, 1769, 63524, 589950, 442350, // AGAV 1770, 63525, 553500, 415200, // ECHIO 1773, 63526, 563700, 422700, // HODREMLIN 1772, 63527, 518400, 388800, // ISILLA 1774, 63528, 601200, 450900, // SEEKER 1771, 63529, 486000, 364500; // VANBERK end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 120 && BaseLevel <= 140"); end; } veins,226,154,0 script Bounty Board 80-100#vei1 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 80, 100, 20, 2, 1784, 63530, 380400, 285450; // STAPO end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 80 && BaseLevel <= 100"); end; } veins,224,154,0 script Bounty Board 100-120#vei2 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 100, 120, 20, 2, 1781, 63531, 270000, 202500, // DROSERA 1783, 63532, 265350, 199050, // GALION 1836, 63533, 380400, 285450, // MAGMARING 1780, 63534, 291600, 218700; // MUSCIPULAR end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 100 && BaseLevel <= 120"); end; } veins,222,154,0 script Bounty Board 120-140#vei3 2_BULLETIN_BOARD,{ callfunc "F_Bounty_Board", 120, 140, 20, 2, 1833, 63535, 839700, 1156200, // KASA 1838, 63536, 553500, 565200, // KNOCKER 1831, 63539, 887700, 1070700, // SALAMANDER 1870, 63537, 837000, 627600, // NECROMANCER 1865, 63538, 527100, 462900, // RAGGED_ZOMBIE 1864, 63540, 590700, 405300; // ZOMBIE_SLAUGHTER end; OnInit: questinfo(QTYPE_QUEST, QMARK_NONE, "BaseLevel >= 120 && BaseLevel <= 140"); end; }
And \db\import\quest_db.yml
# iRO Bounty Board Rachel and Veins - Id: 63516 Title: Bounty Board Hunt Targets: - Mob: ANACONDAQ Count: 150 - Id: 63517 Title: Bounty Board Hunt Targets: - Mob: ROWEEN Count: 150 - Id: 63518 Title: Bounty Board Hunt Targets: - Mob: SIROMA Count: 150 - Id: 63519 Title: Bounty Board Hunt Targets: - Mob: DESERT_WOLF Count: 150 - Id: 63520 Title: Bounty Board Hunt Targets: - Mob: DROSERA Count: 150 - Id: 63521 Title: Bounty Board Hunt Targets: - Mob: HILL_WIND Count: 150 - Id: 63522 Title: Bounty Board Hunt Targets: - Mob: ICE_TITAN Count: 150 - Id: 63523 Title: Bounty Board Hunt Targets: - Mob: SNOWIER Count: 150 - Id: 63524 Title: Bounty Board Hunt Targets: - Mob: AGAV Count: 150 - Id: 63525 Title: Bounty Board Hunt Targets: - Mob: ECHIO Count: 150 - Id: 63526 Title: Bounty Board Hunt Targets: - Mob: HODREMLIN Count: 150 - Id: 63527 Title: Bounty Board Hunt Targets: - Mob: ISILLA Count: 150 - Id: 63528 Title: Bounty Board Hunt Targets: - Mob: SEEKER Count: 150 - Id: 63529 Title: Bounty Board Hunt Targets: - Mob: VANBERK Count: 150 - Id: 63530 Title: Bounty Board Hunt Targets: - Mob: STAPO Count: 150 - Id: 63531 Title: Bounty Board Hunt Targets: - Mob: DROSERA Count: 150 - Id: 63532 Title: Bounty Board Hunt Targets: - Mob: GALION Count: 150 - Id: 63533 Title: Bounty Board Hunt Targets: - Mob: MAGMARING Count: 150 - Id: 63534 Title: Bounty Board Hunt Targets: - Mob: MUSCIPULAR Count: 150 - Id: 63535 Title: Bounty Board Hunt Targets: - Mob: KASA Count: 150 - Id: 63536 Title: Bounty Board Hunt Targets: - Mob: KNOCKER Count: 150 - Id: 63537 Title: Bounty Board Hunt Targets: - Mob: NECROMANCER Count: 150 - Id: 63538 Title: Bounty Board Hunt Targets: - Mob: RAGGED_ZOMBIE Count: 150 - Id: 63539 Title: Bounty Board Hunt Targets: - Mob: SALAMANDER Count: 150 - Id: 63540 Title: Bounty Board Hunt Targets: - Mob: ZOMBIE_SLAUGHTER Count: 150
Thanks for this, ar you have complete IRO bounty board quest?
-
46 minutes ago, Akbare-2nd said:
i check this is not include new quest board like Rachel and Veins.
-
4 hours ago, Kudo said:
yup sir i recompile but still nothing change maybe i need a diff client for this.
try with @Akbare-2nd option, i fix the issue using that method.
-
1 hour ago, luizinhomt said:
Good evening everyone, does anyone know a code so that when talking to the NPC they will ask for a password, if this password is correct it will open a portal to another location. thank you all
this using at this link Warp with password Fast help pls! - Script Requests - rAthena
-
On 3/27/2024 at 11:47 AM, fakezinhu666 said:
Title.
char_name_option is set to 0.
Client is 2022-04-06
When I click 'create' in client, nothing happens. If I remove special characters (such as [ ] ™) then character is created.
at conf folder open char_athena.conf
at char_name_letters, put the symbol in the list
-
On 3/8/2024 at 2:26 PM, pajodex said:
I think its only a typo on my part as I was in a game while uploading this file. So, I didn't really mind minor stuffs. The file itself should be v1.2
thanks, already test it, now the error warning not showing in map server.
- 1
-
11 hours ago, ManokStreZ said:
hallo, i was download lateset rathena today
also download kro RAG_SETUP_220706.exe
for rathena connect usingMySql Workbrench tutorial Here
everything fine nothing happen until i got like this pic..
sclientinfo.xml
<?xml version="1.0" encoding="euc-kr" ?>
<clientinfo>
<desc>Ragnarok Client Information</desc>
<servicetype>korea</servicetype>
<servertype>primary</servertype>
<connection>
<display>Local</display>
<address>127.0.0.1</address>
<port>6900</port>
<version>55</version>
<langtype>1</langtype>
<registrationweb>www.ragnarok.com</registrationweb>
<loading>
<image>loading00.jpg</image>
<image>loading01.jpg</image>
<image>loading02.jpg</image>
<image>loading03.jpg</image>
<image>loading04.jpg</image>
<image>loading05.jpg</image>
<image>loading06.jpg</image>
</loading>
</connection>
</clientinfo>
if you guys know something please tell me,,,thanks a lotare you already create new account using account ID 2000000 at login table?
Or try create it via client using user_M or user _F for the first time.
after that only use user for ID.
-
7 hours ago, Kimsigehito said:
makasih bro, sama mau tanya bro ada ga link cara buat ro private sendiri gitu buat belajar?
coba gunakan guide di link ini [Tutorial] Video Edition - How to Setup rAthena and run Ragnarok Updated 2018-7-28 - Page 6 - Installation Support - rAthena
NPC ITEMSHOP CUSTOM
in Scripting Support
Posted
i think you can try with barter script.