-
Posts
1702 -
Joined
-
Last visited
-
Days Won
19
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Patskie
-
Well I have tried that script and didn't face any issue with regards to the WAV sounds. You can post your script and let others help you out.
-
If you wouldn't try, you will never know
-
OnNPCKillEvent is for monster.
-
Marami ng changes after battlegrounds ni Easycore. I doubt if someone can give the upgrade for free. Alternatively pwede mo irevert yung rAthena version mo to a previous one and then apply the Easycore diff, again and again do it at your own risk. https://github.com/rathena/rathena/tree/de9f667d2f6e3272e6eca27fd2074142f379531d
-
Change getmapxy( .@map$, .@x, .@y, 0 ); to getmapxy( .@map$, .@x, .@y );
-
You have to add up something like this OnPCKillEvent: .@self = getcharid(3); if (killedrid == .@self) end; attachrid killedrid; .@class = Class; attachrid .@self; .@index = inarray(class_arr, .@class); if (.@index == -1) { .@size = getarraysize(class_arr); class_arr[.@size] = .@class; count_arr[.@size] = 1; } else cleararray count_arr[.@index], count_arr[.@index] + 1, 1; end; and then you can create npc to fetch all the details like below .@size = getarraysize(class_arr); if (!.@size) mes "No data"; else { mes "Your kills per class"; for (.@i = 0; .@i < .@size; .@i++) mes "> Job:" + jobname(class_arr[.@i]) + " | Kill Count:" + count_arr[.@i]; } close;
-
query_sql ("INSERT INTO `redeembetalog` (`code`, `item_amount`,`name`, `time`) VALUES ('"+escape_sql(@voucher_code$)+"', '"+@amt+"', '"+strcharinfo(0)+"', NOW())"); Store your data like above. Then whenever you pull the data, format them first before showing to the npc.
-
"$" - A global permanent variable. They are stored by map-server in database table `mapreg`.
-
Sa server main grf mo makikita yan msgstringtable.txt
-
Paano po gawin 2 portal sa entrance ng WOE?
Patskie replied to Sergardo's topic in Tulong para sa Script at Database
Warps is nasa npc folder yan, you can use below command to reload the warps @reloadnpcfile <path> Unloads and loads an NPC. Same as @unloadnpcfile and @loadnpc but ran as one command. Example: @reloadnpcfile npc/custom/jobmaster.txt -
We're not so genius to guess how your other script is doing. Maybe you could post both scripts which you think conflicts each other so other people could help you solve your issues.
-
Bypass for Battleground Double Login IP Source Edit
Patskie replied to iraciz's question in Source Support
Not everyone does have that Easycore battleground mod. So you have to dig in more by yourself. Some insights like below You could add a state in pc.hpp bool cashshop_open; bool sale_open; + bool brothers; unsigned int block_action : 10; and access them in an if condition like if (sd->state.brothers) { // bypass the duplicate Of course you need to set the brothers (true/false) somewhere based on some criteria. Up to you where and how -
You have to used another way to store your bet amount. It's up to you to find out. I gave most of the mechanics already, besides you should detailed out your topic to prevent "1 question, last question" replies.
-
- script MVP_vs_MVP FAKE_NPC,{ OnMinute00: if (gettime(DT_HOUR) % 2 || .start) end; goto OnStart; end; OnStart: mapwarp "1@dth3", "prontera", 150, 150; killmonster "1@dth3", "All"; .start = 1; announce .npc$ + " We are going to have a MVP vs MVP Event.", bc_all; sleep 7000; announce .npc$ + " For those who want to join, you can participate by using @mvpjoin", bc_all; sleep 7000; announce .npc$ + " We will start the event after 1 minute", bc_all; sleep 60000; announce .npc$ + " The entry to the event is now closed", bc_all; .start = 2; sleep 7000; if (getmapusers("1@dth3") < 1) { announce .npc$ + " Not enough participants to continue the event", 0; .start = 0; end; } mapannounce "1@dth3", .npc$ + " The rules for this event is simple", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Two MVP's will spawn at the center of the map and will attack each other", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Before these MVP's spawn, I will give you 1 minute to make a bet", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " The bet cost for this event is " + F_InsertComma(.bet_cost) + "z and when your chosen MVP wins you'll get as much as " + F_InsertComma(.bet_rewd) + "z !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " All good?? Let's start betting !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " To make a bet please use @mvpbet command, I will give 1 minute for you guys to make a bet", bc_map; .start = 3; sleep 55000; mapannounce "1@dth3", .npc$ + " Betting will close in 5...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 4...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 3...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 2...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 1...", bc_map; sleep 1000; .start = 4; mapannounce "1@dth3", .npc$ + " Betting is now closed !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Let's get ready to RUMBLE !!!", bc_map; .@mid = .MVP[rand(.size)]; monster "1@dth3", 68, 68, "MVP A", .@mid, 1, strnpcinfo(1) + "::OnDie1", Size_Small, AI_NONE; .ma = $@mobid; monster "1@dth3", 71, 68, "MVP B", .@mid, 1, strnpcinfo(1) + "::OnDie2", Size_Small, AI_ATTACK; .mb = $@mobid; unitattack .ma, .mb; unitattack .mb, .ma; end; OnDie1: unittalk .mb, "[MVP B] Mwahaha!~ Such a weak opponent!"; sleep 7000; killmonster "1@dth3", "All"; .start = 0; addrid(5, 0, "1@dth3"); if (2 == @mvp_bet) { message strcharinfo(0),"Congratulations! You won the event, Good choice!"; Zeny += .bet_rewd; } @mvp_bet = 0; setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; OnDie2: unittalk .ma, "[MVP A] Mwahaha!~ Such a weak opponent!"; sleep 7000; killmonster "1@dth3", "All"; .start = 0; addrid(5, 0, "1@dth3"); if (1 == @mvp_bet) { message strcharinfo(0),"Congratulations! You won the event, Good choice!"; Zeny += .bet_rewd; } @mvp_bet = 0; setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; OnEventBet: mes .npc$; if (!.start) mes "The event is not active."; else if (.start != 3) mes "The event cannot accept bets at the moment."; else if (Zeny < .bet_cost) mes "You don't have enough zeny to make a bet."; else if (@mvp_bet) mes "You already placed your bet."; else if (strcharinfo(3) != "1@dth3") mes "Hmm~"; else { mes "Which mvp will you bet on this match???"; next; .@s = select("MVP A:MVP B"); mes .npc$; mes "Are you sure you want to bet " + F_InsertComma(.bet_cost) + " on " + (.@s == 1 ? "MVP A" : "MVP B") + "?"; next; if (select("Yes:No") & 2) end; if (.start != 3) { // in case they delay the select ??? setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; } mes .npc$; mes "Good luck and have fun!"; Zeny -= .bet_cost; @mvp_bet = .@s; } end; OnEventJoin: if (!.start) message strcharinfo(0), "The event is not active."; else if (.start != 1) message strcharinfo(0), "The event is not yet allowing participants to enter."; else { setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, true; switch (rand(1,4)) { case 1: warp "1@dth3", 49, 50; break; case 2: warp "1@dth3", 49, 88; break; case 3: warp "1@dth3", 89, 88; break; case 4: warp "1@dth3", 89, 50; break; } } end; OnInit: bindatcmd "mvpjoin", strnpcinfo(1) + "::OnEventJoin"; bindatcmd "mvpbet", strnpcinfo(1) + "::OnEventBet"; bindatcmd "mvpstart", strnpcinfo(1) + "::OnStart", 99, 99; // List of MVP's setarray .MVP[0], 1112, 1115, 1147, 1150, 1157, 1159; .size = getarraysize(.MVP); .npc$ = "[MVP vs MVP Event]"; .bet_cost = 5000; // 5,000z to bet in the event .bet_rewd = 1000000; // 1,000,000z if bet wins end; } 1@dth3 mapflag monster_noteleport 1@dth3 mapflag noskill 1@dth3 mapflag noloot 1@dth3 mapflag noitemconsumption 1@dth3 mapflag nomemo 1@dth3 mapflag nosave SavePoint 1@dth3 mapflag nowarpto 1@dth3 mapflag nowarp 1@dth3 mapflag noteleport
-
Does not from my local server. Are you using latest rAthena?
-
Change recovery; to recovery 0, getcharid(0), 4;
-
Try below script. I didn't test it too much - script MVP_vs_MVP FAKE_NPC,{ OnMinute00: if (gettime(DT_HOUR) % 2 || .start) end; goto OnStart; end; OnStart: mapwarp "1@dth3", "prontera", 150, 150; killmonster "1@dth3", "All"; .start = 1; announce .npc$ + " We are going to have a MVP vs MVP Event.", bc_all; sleep 7000; announce .npc$ + " For those who want to join, you can participate by using @mvpjoin", bc_all; sleep 7000; announce .npc$ + " We will start the event after 1 minute", bc_all; sleep 60000; announce .npc$ + " The entry to the event is now closed", bc_all; .start = 2; sleep 7000; if (getmapusers("1@dth3") < 1) { announce .npc$ + " Not enough participants to continue the event", 0; .start = 0; end; } mapannounce "1@dth3", .npc$ + " The rules for this event is simple", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Two MVP's will spawn at the center of the map and will attack each other", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Before these MVP's spawn, I will give you 1 minute to make a bet", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " The bet cost for this event is " + F_InsertComma(.bet_cost) + "z and when your chosen MVP wins you'll get as much as " + F_InsertComma(.bet_rewd) + "z !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " All good?? Let's start betting !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " To make a bet please use @mvpbet command, I will give 1 minute for you guys to make a bet", bc_map; .start = 3; sleep 55000; mapannounce "1@dth3", .npc$ + " Betting will close in 5...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 4...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 3...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 2...", bc_map; sleep 1000; mapannounce "1@dth3", .npc$ + " 1...", bc_map; sleep 1000; .start = 4; mapannounce "1@dth3", .npc$ + " Betting is now closed !!!", bc_map; sleep 7000; mapannounce "1@dth3", .npc$ + " Let's get ready to RUMBLE !!!", bc_map; .@mid = .MVP[rand(.size)]; monster "1@dth3", 68, 68, "MVP A", .@mid, 1, strnpcinfo(1) + "::OnDie1", Size_Small, AI_NONE; .ma = $@mobid; monster "1@dth3", 71, 68, "MVP B", .@mid, 1, strnpcinfo(1) + "::OnDie2", Size_Small, AI_ATTACK; .mb = $@mobid; end; OnDie1: unittalk .mb, "[MVP B] Mwahaha!~ Such a weak opponent!"; sleep 7000; killmonster "1@dth3", "All"; .start = 0; addrid(5, 0, "1@dth3"); if (2 == @mvp_bet) { message strcharinfo(0),"Congratulations! You won the event, Good choice!"; Zeny += .bet_rewd; } @mvp_bet = 0; setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; OnDie2: unittalk .ma, "[MVP A] Mwahaha!~ Such a weak opponent!"; sleep 7000; killmonster "1@dth3", "All"; .start = 0; addrid(5, 0, "1@dth3"); if (1 == @mvp_bet) { message strcharinfo(0),"Congratulations! You won the event, Good choice!"; Zeny += .bet_rewd; } @mvp_bet = 0; setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; OnEventBet: mes .npc$; if (!.start) mes "The event is not active."; else if (.start != 3) mes "The event cannot accept bets at the moment."; else if (Zeny < .bet_cost) mes "You don't have enough zeny to make a bet."; else if (@mvp_bet) mes "You already placed your bet."; else if (strcharinfo(3) != "1@dth3") mes "Hmm~"; else { mes "Which mvp will you bet on this match???"; next; .@s = select("MVP A:MVP B"); mes .npc$; mes "Are you sure you want to bet " + F_InsertComma(.bet_cost) + " on " + (.@s == 1 ? "MVP A" : "MVP B") + "?"; next; if (select("Yes:No") & 2) end; if (.start != 3) { // in case they delay the select ??? setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, false; warp "SavePoint", 0, 0; end; } mes .npc$; mes "Good luck and have fun!"; Zeny -= .bet_cost; @mvp_bet = .@s; } end; OnEventJoin: if (!.start) message strcharinfo(0), "The event is not active."; else if (.start != 1) message strcharinfo(0), "The event is not yet allowing participants to enter."; else { setpcblock PCBLOCK_ATTACK | PCBLOCK_IMMUNE, true; switch (rand(1,4)) { case 1: warp "1@dth3", 49, 50; break; case 2: warp "1@dth3", 49, 88; break; case 3: warp "1@dth3", 89, 88; break; case 4: warp "1@dth3", 89, 50; break; } } end; OnInit: bindatcmd "mvpjoin", strnpcinfo(1) + "::OnEventJoin"; bindatcmd "mvpbet", strnpcinfo(1) + "::OnEventBet"; bindatcmd "mvpstart", strnpcinfo(1) + "::OnStart", 99, 99; // List of MVP's setarray .MVP[0], 1112, 1115, 1147, 1150, 1157, 1159; .size = getarraysize(.MVP); .npc$ = "[MVP vs MVP Event]"; .bet_cost = 5000; // 5,000z to bet in the event .bet_rewd = 1000000; // 1,000,000z if bet wins end; } 1@dth3 mapflag monster_noteleport 1@dth3 mapflag noskill 1@dth3 mapflag noloot 1@dth3 mapflag noitemconsumption 1@dth3 mapflag nomemo 1@dth3 mapflag nosave SavePoint 1@dth3 mapflag nowarpto 1@dth3 mapflag nowarp 1@dth3 mapflag noteleport
-
How to disable normal attack if you are not equip specific item
Patskie replied to Poring King's question in Scripting Support
You can try to work with below command to get what you want -
After if (.@previous_class != Class) { if (.Platinum) callfunc "F_GetPlatinumSkills"; if (.GetJobEquip) Get_Job_Equip(); } Add set instantjobchange,1;
-
https://github.com/rathena/rathena/blob/master/conf/motd.txt data/msgstringtable.txt
-
Something like this? prontera,150,150,6 script Sample 100,{ if (BaseLevel < 20) end; switch (select("Register", "View List", (getgmlevel() < 99 ? "" : "[^FF0000GM Menu^000000] Clear List"), "Exit")) { case 1: if (inarray($register$, strcharinfo(0)) != -1) mes "Already registered"; else { mes "Done registration"; $register$[getarraysize($register$)] = strcharinfo(0); } close; case 2: .@s = getarraysize($register$); if (!.@s) mes "No list"; else { mes "Registration List"; for (.@i = 0; .@i < .@s; .@i++) mes (.@i+1) + ". " + $register$[.@i]; } close; case 3: deletearray $register$; end; } }
-
Maybe your function does not work well hence the issue
-
17767,Advertisment_Box_Price,Advertisment Box Price,18,0,,1,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "CustomBox"; callfunc "CustomBox1"; },{},{}
-
Did you recompile your server?
-
I don't think it will be hard as per your claim ? @tokenacc001 Go to src/map/clif.cpp and change below from // prevent leaking the presence of GM-hidden objects if( sc && sc->option&OPTION_INVISIBLE ) target = SELF; to // prevent leaking the presence of GM-hidden objects if( (sc && sc->option&OPTION_INVISIBLE) || !val ) target = SELF; Recompile and re-test the script given by @Poring King . above change will work globally so use at your own risk.