Syrisone Posted March 3, 2024 Group: Members Topic Count: 7 Topics Per Day: 0.00 Content Count: 27 Reputation: 1 Joined: 05/27/12 Last Seen: April 10, 2024 Share Posted March 3, 2024 Hello i think i wrote it in the wrong topic thats why i pass the link here a lil help could be nice and u can use the script and all data anyways My lil Event Project (Lil p_q) Quote Link to comment Share on other sites More sharing options...
Racaae Posted March 6, 2024 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 212 Reputation: 94 Joined: 06/02/12 Last Seen: 1 hour ago Share Posted March 6, 2024 Hello \doc\script_commands.txt This document explain most commands used in scripting. It can be your best friend for learning. I tried adding some stuff in the script you started. The roulette is working The shop is working The entrance npc is working Spoiler //===== rAthena Script ======================================= //= Poring Island Event //===== Description: ========================================= //= Multiple NPCs that assigns quests, warps events //===== Additional Comments: ================================= //= 1.0 Initial release. [Syrisone] [yourname] //============================================================ //= Entry NPC //prontera,159,192,4 script Popo 1096,{ gonryun,167,138,5 script Popo#tw 4_ANGELING,{ //.@ticket_id = 1001148; // Poring Island Entry Ticket .@ticket_id = 7350; //placeholder //.@quest_id = 293140; // Poring Island entry 1 .@quest_id = 3040; //placeholder .@time = 60 - gettime(DT_MINUTE); //get time left mes "[Popo]"; mes "Have you heard about the mysterious"; mes "island that is full of porings?"; mes "I can send you there!"; mes "Poring Island resets at every hour,"; mes "and the remaining time is ^FF0000" + (.@time>1?.@time + " minutes":"only seconds") + "^000000."; next; // Erase quest to gain free entry at new day. if (checkquest(.@quest_id,PLAYTIME) == 2) { pi_entered = 0; erasequest .@quest_id; } // Check if player entered 3 times if (pi_entered >= 3) { mes "[Popo]"; mes "You can only use tickets to enter the Poring Island two times."; mes "Come back ^0000FFtomorrow after 4:00^000000."; close; } if(select("Go:Stop") == 1) { //If GO --->Check once per day free warp if go above warp if been there go use ticket // Check if player already entered today for free if (pi_entered) { mes "[Popo]"; mes "You've been there already! Its a"; mes "pity that you can only go to Poring"; mes "Island once a day."; mes "But if you use ^0000FFPoring Island Entry^000000"; mes "^0000FFTicket 1 pcs^000000 you can go again. Do"; mes "you want to use the Entry Ticket?"; next; if(select("Use:Don't use") == 1) { // Check if player has item. if (countitem(.@ticket_id) < 1) { mes "[Popo]"; mes "Sorry."; mes "You don't have enough ^0000FFPoring Island Entry Ticket^000000."; close; } mes "[Popo]"; mes "Ticket verified. I will send you"; mes "there right away!"; close2; delitem .@ticket_id, 1; //remove ticket from player as payment } else { mes "[Popo]"; mes "Ok."; close; } } if (pi_entered == 0) { mes "[Popo]"; mes "I will let you enter for free this time."; mes "Remember all adventurers are transported out of the Island at every sharp hour."; close2; } // Everything okay. Give quest to player and teleport. if (isbegin_quest(.@quest_id) == 0) setquest .@quest_id; pi_entered++; warp .map$, 0 , 0; // teleport player to Island end; } //if Stop mes "[Popo]"; mes "Come back to me when you change your mind."; close; OnInit: .map$ = "pay_fild04"; // Event Map setmapflag .map$, mf_nowarp; setmapflag .map$, mf_nowarpto; setmapflag .map$, mf_noteleport; setmapflag .map$, mf_monster_noteleport; setmapflag .map$, mf_nosave; setmapflag .map$, mf_nomemo; setmapflag .map$, mf_nobranch; setmapflag .map$, mf_noicewall; questinfo QTYPE_EVENT, QMARK_YELLOW, "pi_entered < 3"; end; // All players are transported out at every sharp hours OnMinute59: mapannounce .map$, "Popo : Everyone will be teleported out of the Island in 1 minute!",bc_map; sleep 60000; // (60000 = wait 60 seconds to continue the script.) mapwarp .map$,"gonryun", 169 , 130; // (teleport everyone on the map) end; } //============================================================ //= Reward NPC //eventmap.gat,159,192,4 script Ling Ling#tw 4_ARCHANGELING,{ gonryun,186,137,5 script Ling Ling#tw 4_ARCHANGELING,{ disable_items; //.@token_id = 1001005; // Event Token .@token_id = 909; // placeholder mes "[Ling Ling]"; mes "You can use Event Tokens and"; mes "Diamonds to Exchange for various"; mes "goods. What do you need?"; next; switch(select("Exchange Costume:Limited-time Items:Cancel")) { case 1: //if Exchange costume mes "[Ling Ling]"; mes "The following can be exchanged:"; next; switch(select("Costume Poring Mufffler:Costume Poporing Muffler:Costume Marin Muffler:Costume Drops Muffler:Costume Rainbow Poring Hat:Cancel")) { case 1: mes "[Ling Ling]"; mes "<ITEM>Poring Mufffler<INFO>31490</INFO></ITEM>?"; mes "You need 500 Event Token and 2 Poring Diamonds to get this costume."; mes " "; mes "" + (countitem(.@token_id)<500?"^FF0000":"^008000") + "(" + countitem(.@token_id) + "/500) Event Token^000000"; mes "" + (countitem(733)<2?"^FF0000":"^008000") + "(" + countitem(733) + "/2) Poring Diamond^000000"; if (countitem(.@token_id) < 500 || countitem(733) < 2) close; next; if(select("Cancel", "Confirm exchange")== 1) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (checkweight(1301,1) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } mes "[Ling Ling]"; mes "Here is your new costume!"; delitem .@token_id, 500; // Event Token delitem 733, 2; // Diamond getitem 31490, 1; // Costume Hat close; case 2: mes "[Ling Ling]"; mes "<ITEM>Poporing Mufffler<INFO>31586</INFO></ITEM>?"; mes "You need 500 Event Token and 2 Poporing Diamonds to get this costume."; mes " "; mes "" + (countitem(.@token_id)<500?"^FF0000":"^008000") + "(" + countitem(.@token_id) + "/500) Event Token^000000"; mes "" + (countitem(730)<2?"^FF0000":"^008000") + "(" + countitem(730) + "/2) Poporing Diamond^000000"; if (countitem(.@token_id) < 500 || countitem(730) < 2) close; next; if(select("Cancel", "Confirm exchange")== 1) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (checkweight(1301,1) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } mes "[Ling Ling]"; mes "Here is your new costume!"; delitem .@token_id, 500; // Event Token delitem 730, 2; // Diamond getitem 31586, 1; // Costume Hat close; case 3: mes "[Ling Ling]"; mes "<ITEM>Marin Mufffler<INFO>31584</INFO></ITEM>?"; mes "You need 500 Event Token and 2 Marin Diamonds to get this costume."; mes " "; mes "" + (countitem(.@token_id)<500?"^FF0000":"^008000") + "(" + countitem(.@token_id) + "/500) Event Token^000000"; mes "" + (countitem(731)<2?"^FF0000":"^008000") + "(" + countitem(731) + "/2) Marin Diamond^000000"; if (countitem(.@token_id) < 500 || countitem(731) < 2) close; next; if(select("Cancel", "Confirm exchange")== 1) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (checkweight(1301,1) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } mes "[Ling Ling]"; mes "Here is your new costume!"; delitem .@token_id, 500; // Event Token delitem 731, 2; // Diamond getitem 31584, 1; // Costume Hat close; case 4: mes "[Ling Ling]"; mes "<ITEM>Drops Mufffler<INFO>31585</INFO></ITEM>?"; mes "You need 500 Event Token and 2 Drops Diamonds to get this costume."; mes " "; mes "" + (countitem(.@token_id)<500?"^FF0000":"^008000") + "(" + countitem(.@token_id) + "/500) Event Token^000000"; mes "" + (countitem(732)<2?"^FF0000":"^008000") + "(" + countitem(732) + "/2) Drops Diamond^000000"; if (countitem(.@token_id) < 500 || countitem(732) < 2) close; next; if(select("Cancel", "Confirm exchange")== 1) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (checkweight(1301,1) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } mes "[Ling Ling]"; mes "Here is your new costume!"; delitem .@token_id, 500; // Event Token delitem 732, 2; // Diamond getitem 31585, 1; // Costume Hat close; case 5: mes "[Ling Ling]"; mes "<ITEM>Rainbow Poring Hat<INFO>19676</INFO></ITEM>?"; mes "You need 500 Event Tokens to get this costume."; mes " "; mes "" + (countitem(.@token_id)<500?"^FF0000":"^008000") + "(" + countitem(.@token_id) + "/500) Event Token^000000"; if (countitem(.@token_id) < 500) close; next; if(select("Cancel", "Confirm exchange")== 1) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (checkweight(1301,1) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } mes "[Ling Ling]"; mes "Here is your new costume!"; delitem .@token_id, 500; // Event Token getitem 19676, 1; // Costume Hat close; case 6: mes "[Ling Ling]"; mes "Ok bye."; close; } //Limited-time Items only on this time other wise close case 2: mes "[Ling Ling]"; mes "Limited exchanger will be open at"; mes "04:00~05:00, 11:00~12:00,"; mes "20:00~21:00."; // Check if open hours. if (.open == 0) close; mes "It's opening hours, what do you"; mes "need?"; next; for ( .@i = 0; .@i < getarraysize(.items); .@i+=3 ) .@menu$ += (.items[.@i+2]<1?"^FF0000":"") + getitemname(.items[.@i]) + " - " + (.items[.@i+2]<1?"sold out":.items[.@i+2]+" left") + "^000000:"; .@s = (select(.@menu$) -1) * 3; if (.items[.@s+2] < 1) { mes "[Ling Ling]"; mes getitemname(.items[.@s]) + " is sold out."; mes "Try to buy it next time the shop opens."; close; } do { if (.open == 0) callsub S_Closed; if (.items[.@s+2] > 1) { mes "[Ling Ling]"; do { mes "Each [<ITEM>" + getitemname(.items[.@s]) + "<INFO>" + .items[.@s] + "</INFO></ITEM>] costs " + .items[.@s+1] + " tokens."; mes "I have " + .items[.@s+2] + " available to sell."; mes "How many do you want?"; mes " "; mes "Input 0 to cancel."; next; input .@i; if (.@i == 0) { mes "[Ling Ling]"; mes "Deal cancelled."; close; } if (.items[.@s+2] < 1) callsub "S_AllSold"; if (.@i < 1 || .@i > .items[.@s+2]) { mes "[Ling Ling]"; mes "I can't sell you this amount."; } else break; } while (1); } else .@i = 1; .@price = .items[.@s+1] * .@i; mes "[Ling Ling]"; mes .@i + "x " + getitemname(.items[.@s]) + " will be ^0000FF" + .@price + " Event Tokens^000000."; mes "Do you want to proceed?"; next; if (select("Yes. Buy item", "Cancel") == 2) { mes "[Ling Ling]"; mes "Ok bye."; close; } if (.open == 0) callsub S_Closed; if (.items[.@s+2] < 1) callsub "S_AllSold"; if (countitem(.@token_id) < .@price) { mes "[Ling Ling]"; mes "You don't have enough Event Tokens..."; mes " "; mes "^FF0000(" + countitem(.@token_id) + "/" + .@price + ") Event Token^000000"; close; } if (checkweight(.items[.@s], .@i) == 0) { mes "[Ling Ling]"; mes "You are carrying too much items, please reduce your weight."; close; } if (.items[.@s+2] < .@i) { mes "[Ling Ling]"; mes "Looks like someone bought some stock of the item while we were talking."; mes "Now I don't have the amount you were about to buy..."; next; if (select( "Buy another amount", "Cancel") == 2) { mes "[Ling Ling]"; mes "Try to buy it next time the shop opens."; close; } } else break; } while (1); delitem .@token_id, .@price; getitem .items[.@s], .@i; .items[.@s+2] -= .@i; mes "[Ling Ling]"; mes "Here's your item."; close; case 3: mes "[Ling Ling]"; mes "OK bye."; close; } S_AllSold: mes "[Ling Ling]"; mes "Looks like someone bought all stock I had of this item while we were talking."; mes "Try to buy it next time the shop opens."; close; S_Closed: mes "[Ling Ling]"; mes "Sorry. The shop just closed while we were talking."; mes "Come back later."; close; OnInit: // Hours of Limited-Time Shop (4:00 11:00 20:00) setarray .open_hours, 4, 11, 20; OnMinute00: if (inarray(.open_hours, gettime(DT_HOUR)) < 0) { .open = 0; end; } OnOpen: setarray .items, // Limited-time Item list //<item ID, Price, Stock> 12429, 15, 199, 12433, 15, 199, 12431, 15, 199, 12430, 15, 199, 12432, 15, 199, 12434, 15, 199, 6224, 15, 199, 6223, 15, 199, 480108, 500, 1; .open = 1; end; } //============================================================ //= Roulette NPC //eventmap.gat,159,192,4 script Poring Roulette Staff 4_M_MANAGER,{ gonryun,164,131,5 script Poring Roulette Staff 4_M_MANAGER,{ //.@token_id = 1001005; // Event Token .@token_id = 909; // placeholder .@max_bet = 20; // How many tokens can the player bet maximum mes "[Poring Roulette Staff]"; mes "I'm the Person in charge of Poring"; mes "Roulett event!"; mes "What do you need?"; next; switch(select("What is Poring Roulette?:Roulette Betting:Claim Reward:Cancel")) { case 1: // Explain event. close; case 2: // Roulette started if ($pi_status) { mes "[Poring Roulette Staff]"; mes "The roulette started."; mes "No more bets can be made."; close; } //if Roulette Betting check claim reward if (pi_betcheck == $pi_last_betcheck && pi_my_bet_name$ == $pi_winner_name$ && $pi_last_betcheck) { mes "[Poring Roulette Staff]"; mes "Want to place a bet? Remind you"; mes "that you have not claimed your"; mes "Reward, so you cannot bet!"; close; } // if already betted on current roulette if (pi_betcheck == $pi_current_betcheck) { mes "[Poring Roulette Staff]"; mes "Want to place a bet? Remind you that you have betted already."; mes "You bet ^0000FF" + pi_my_bet_token + "x Token on " + pi_my_bet_name$ + "^000000."; mes "Please wait the roulette start spinning."; close; } mes "[Poring Roulette Staff]"; mes "Which poring do you want to bet"; mes "on?"; next; switch(select("Poring(2x):Poporing(4x):Drops(6x):Golden Poring(10x)")) { case 1: .@ChoosedPoring$ = "Poring"; break; case 2: .@ChoosedPoring$ = "Poporing"; break; case 3: .@ChoosedPoring$ = "Drops"; break; case 4: .@ChoosedPoring$ = "Golden Poring"; break; } do { mes "[Poring Roulette Staff]"; mes "Decide the number of Event Token to"; mes "bet. Minimum 1 and Maximum " + .@max_bet + "."; next; input .@TokenSet; // input number here mes "[Poring Roulette Staff]"; if (.@TokenSet == 0) { mes "Betting cancelled."; close; } if (.@TokenSet < 1 || .@TokenSet > .@max_bet) { mes "Sorry. You cannot bet this amount."; mes "Min: 1 ~ Max: 20."; mes " "; mes "Input 0 to cancel betting."; next; } else { mes "Roulette selection: " + .@ChoosedPoring$; mes "Amount of Event Token: " + .@TokenSet; mes " "; mes "Is it correct?"; next; if(select("Correct:Wrong") == 2) { //If wrong go back to put number } else { //If Correct start roulette mes "[Poring Roulette Staff]"; // Player don't have tokens to bet if (countitem(.@token_id) < .@TokenSet) { mes "Sorry. You don't seem to have this number of Tokens."; close; } // bet successful delitem .@token_id, .@TokenSet; pi_my_bet_token = .@TokenSet; pi_my_bet_name$ = .@ChoosedPoring$; pi_betcheck = $pi_current_betcheck; mes "Your bet has been confirmed. If you"; mes "win, please collect your reward"; mes "before the next spin."; close; } } } while (1); case 3: // Claim reward // Roulette started if ($pi_status) { mes "[Poring Roulette Staff]"; mes "The roulette started."; mes "Let's see who will win!"; close; } if (checkweight(1301,1) == 0) { mes "[Poring Roulette Staff]"; mes "You are carrying too much items, please reduce your weight."; close; } // betted on winner of last roulette if (pi_betcheck == $pi_last_betcheck && pi_my_bet_name$ == $pi_winner_name$ && $pi_last_betcheck) { if ($pi_winner_name$ == "Golden Poring") .@multiplier = 10; else if ($pi_winner_name$ == "Drops") .@multiplier = 6; else if ($pi_winner_name$ == "Poporing") .@multiplier = 4; else .@multiplier = 2; //Poring .@won = pi_my_bet_token * .@multiplier; mes "[Poring Roulette Staff]"; mes "You bet " + pi_my_bet_token + " tokens on " + $pi_winner_name$ + "."; mes "Here's your reward: " + .@won + " Event Tokens!"; getitem .@token_id, .@won; // give tokens pi_my_bet_name$ = ""; // erase old bet pi_betcheck = 0; // erase old bet pi_my_bet_token = 0; // erase old bet close; } // Betted on loser of last roulette if (pi_betcheck == $pi_last_betcheck && pi_my_bet_name$ != $pi_winner_name$ && $pi_last_betcheck) { mes "[Poring Roulette Staff]"; mes "You bet on " + pi_my_bet_name$ + "..."; mes "And the winner of the last roulette was the " + $pi_winner_name$ + "."; mes "You can try again next time."; close; } // Did not bet on last roulette mes "[Poring Roulette Staff]"; mes "There is not reward for you in my list."; mes "You did not win the last roulette."; mes "Or claimed your reward already."; close; case 4: mes "[Poring Roulette Staff]"; mes "Have a good day."; close; } OnMinute50: // check if 2 hours (2am, 4pm, 6am etc.) if (gettime(DT_HOUR) % 2) announce "Poring Roulette : The Roulette will start in 10 minutes in Gonryun.", 0; end; OnMinute00: // check if 2 hours (2am, 4pm, 6am etc.) if (gettime(DT_HOUR) % 2) end; sleep 10000; OnRoulette: if ($pi_status == 1) end; mapannounce strnpcinfo(4), "Poring Roulette : The Roulette is gonna start!",bc_map; sleep 2000; specialeffect EF_MAPPILLAR; sleep 10000; $pi_status = 1; // 0=bet time; 1=roulette started specialeffect EF_BEGINSPELL6; sleep 300; movenpc "effect#tw", .x, .y; specialeffect EF_SUI_EXPLOSION,AREA,"effect#tw"; sleep 200; specialeffect EF_HEARTCASTING,AREA,"effect#tw"; for( .@i = 1; .@i <= 7; .@i++ ) { specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 700; } movenpc "effect#tw", .x-1, .y+1; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 200; movenpc "effect#tw",.x-3, .y+2; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 200; callsub S_Circle, 4; callsub S_Turn; callsub S_Circle, 3; callsub S_Turn; callsub S_Circle, 2; .@winner = rand(1,12); donpcevent "pi_r"+.@winner+"::OnWinnerChosen"; .@slowdown = .@winner - rand(8,12); if (.@slowdown < 1) .@slowdown += 12; for( .@i = 1; .@i != .@slowdown; .@i++ ) { if (.@i == 13) .@i = 1; specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@i; sleep 200; } for( .@z = 1; .@i != .@winner; .@i++ ) { specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@i; .@wait += rand(100,150); sleep 100 + .@wait; if (.@i == 12) .@i = 0; } sleep 300; for( .@i = 1; .@i < 3; .@i++ ) { specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@winner; sleep 1000; } mapannounce strnpcinfo(4), "Poring Roulette : Congratulations to everyone who bet on " + $pi_winner_name$ + " and won the roulette!!",bc_map; npctalk "Talk to me if you bet on " + $pi_winner_name$ + "."; for( .@i = 1; .@i <= 12; .@i++ ) donpcevent "pi_r" + .@i + "::OnWinAnimation"; $pi_last_betcheck = $pi_current_betcheck; $pi_current_betcheck = gettimetick(2); $pi_status = 0; // 0=bet time; 1=roulette started end; S_Circle: do { for( .@i = 1; .@i <= 12; .@i++ ) { specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@i; sleep 100; } .@ii++; } while (.@ii < getarg(0)); return; S_Turn: specialeffect EF_BEGINSPELL3,AREA,"pi_r1"; sleep 100; movenpc "effect#tw", .x-3, .y+2; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; movenpc "effect#tw", .x-2, .y+1; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; movenpc "effect#tw", .x-1, .y; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; movenpc "effect#tw", .x+1, .y-1; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; movenpc "effect#tw", .x+4, .y -2; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; for( .@i = 7; .@i != 10; .@i-- ) { specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@i; sleep 100; if (.@i == 1) .@i = 13; } .@x = .x - 4; .@y = .y - 2; for( .@i = 1; .@i <= 5; .@i++ ) { movenpc "effect#tw", .@x, .@y; specialeffect EF_BEGINSPELL3,AREA,"effect#tw"; sleep 100; .@x += 2; .@y++; } for( .@i = 5; .@i <= 12; .@i++ ) { specialeffect EF_BEGINSPELL3,AREA,"pi_r"+.@i; sleep 100; } return; OnInit: getmapxy(.@m$, .x, .y, BL_NPC, "effect#tw"); if ($pi_current_betcheck == 0) $pi_current_betcheck = gettimetick(2); bindatcmd "pRoulette",strnpcinfo(3)+"::OnGM", 99, 99; end; OnGM: message strcharinfo(0), "Those are special commands that only ADMs and GMs can use."; switch(select("Cancel", "^0000FFStart Roulette^000000", "^0000FFOpen Limited-time Shop^000000", "^0000FFReset my entrances^000000")) { case 1: end; case 2: donpcevent strnpcinfo(3)+"::OnRoulette"; end; case 3: donpcevent "Ling Ling#tw::OnOpen"; end; case 4: pi_entered = 0; end; } } gonryun,178,133,0 script effect#tw HIDDEN_wARP_NPC,{ if (@twtalk > gettimetick(2)) end; .@m$ = F_Rand("Did you bet on me?", "Good luck!"); npctalk strnpcinfo(1) +" : " + .@m$, "", bc_self; @twtalk = gettimetick(2) + 5; end; OnWinnerChosen: $pi_winner_name$ = strnpcinfo(1); end; OnWinAnimation: if (strnpcinfo(1) == $pi_winner_name$) { for( .@i = 1; .@i < 5; .@i++ ) { specialeffect EF_ENHANCE; sleep 3000; } } end; } gonryun,173,136,3 duplicate(effect#tw) Poporing#tw::pi_r1 POPORING gonryun,175,139,3 duplicate(effect#tw) Poring#tw::pi_r2 4_PORING gonryun,178,140,3 duplicate(effect#tw) Golden Poring#tw::pi_r3 GOLDPORING gonryun,181,139,3 duplicate(effect#tw) Poring#tw::pi_r4 4_PORING gonryun,183,136,3 duplicate(effect#tw) Poporing#tw::pi_r5 POPORING gonryun,184,133,3 duplicate(effect#tw) Poring#tw::pi_r6 4_PORING gonryun,183,130,3 duplicate(effect#tw) Drops#tw::pi_r7 DROPS gonryun,181,128,3 duplicate(effect#tw) Poring#tw::pi_r8 4_PORING gonryun,178,127,3 duplicate(effect#tw) Poporing#tw::pi_r9 POPORING gonryun,175,128,3 duplicate(effect#tw) Poring#tw::pi_r10 4_PORING gonryun,173,130,3 duplicate(effect#tw) Drops#tw::pi_r11 DROPS gonryun,172,133,3 duplicate(effect#tw) Poring#tw::pi_r12 4_PORING You will have to change the Item/Quest IDs and some other numbers to match you database since I don't know the ones you're using. Example, find and change those lines: .@ticket_id = 7350; //placeholder .@quest_id = 3040; //placeholder .map$ = "pay_fild04"; // Event Map .@token_id = 909; // placeholder .@max_bet = 20; // How many tokens can the player bet maximum In your server folder there's a file named \db\(pre-)re\mob_db.yml. It contains most data on monsters. Example: - Id: 1242 AegisName: MARIN Name: Marin Level: 37 Hp: 987 BaseExp: 279 JobExp: 230 Attack: 69 Attack2: 14 Defense: 32 MagicDefense: 8 Str: 24 Agi: 5 Vit: 10 Int: 5 Dex: 30 Luk: 15 AttackRange: 1 SkillRange: 10 ChaseRange: 12 Size: Medium Race: Plant Element: Water ElementLevel: 2 WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 DamageMotion: 480 Ai: 01 Drops: - Item: Sticky_Mucus Rate: 750 - Item: Blue_Herb Rate: 38 - Item: Candy Rate: 175 Elemental resistance is defined by the Element Level of the monster. A Marin with Element Waler 3 has more resistance against fire than a Marin with Element Water 2. So find the line ElementLevel: 2 and increase the number (1~4) to increase the monster resistances. Quote Link to comment Share on other sites More sharing options...
Rynbef Posted April 2, 2024 Group: Forum Moderator Topic Count: 48 Topics Per Day: 0.01 Content Count: 941 Reputation: 125 Joined: 05/23/12 Last Seen: Sunday at 06:19 AM Share Posted April 2, 2024 I want to keep attention that this is the German section. Therefore u have to write German and can additional add the English language to. Ich möchte darauf hinweisen, dass dies der deutsche Bereich ist. Deshalb hast du Deutsch zu schreiben und du kannst zusätzlich die Englische Sprache hinzufügen. Rynbef~ 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.