Jump to content
  • 0

[kRo] Missed kRo scripts


Balfear

Question


  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  255
  • Reputation:   234
  • Joined:  07/24/13
  • Last Seen:  

Hi guys!
Maybe someone translate it and pull to our git ?
Recently, there are requests for missing NPCs and I decided to help the project a bit with updating the NPCs like this issue: Issue: 3916, Issue: 3681Issue: 3772Issue: 3498
Not all scripts are complited yet, but i will update it when I find more information/test it in kRo.
image
Missed shop with hats

prt_in,117,79,5 shop 장난감상인#prt 715,2239:-1,2201:-1,2243:-1,2212:-1,2242:-1,2241:-1

image
Character Position Change Coupon seller

prt_in,211,173,3	script	슬롯 이동 카드 판매#slo	4_F_01,{	// 885
	mes "[판매원]";
	mes "안녕하세요.";
	mes "<ITEM>[슬롯 이동 카드]<INFO>12786</INFO></ITEM>를 판매하고 있습니다.";
	mes "^4d4dff카드를 사용한 캐릭터의 슬롯 위치를 변경^000000할 수 있습니다.";
	next;
	mes "[판매원]";
	mes "매 주 한정 수량으로 판매하고 있으므로, 아무것도 보이지 않는다면";
	mes "물품이 모두 소진 된 것이니 다음에 다시 와주세요.";
	close2;
	callshop "change_slot#slo";
	end;
	
OnClock0000:
	if (gettime(DT_DAYOFWEEK) == 1) npcshopupdate "change_slot#slo",12786,0,9999;
	end;
}
-	marketshop	change_slot#slo	FAKE_NPC,12786:100000:9999

image.thumb.png.e3cdfde02bde1e2241c30f7e4c03c9a7.png
Emperium seller

prt_in,212,169,3	script	길드 사무직원	4_M_04,{	// 1890
	if (gettime(DT_DAYOFWEEK) >= 1 && gettime(DT_DAYOFWEEK) <= 6 && gettime(DT_HOUR) >= 18 && gettime(DT_HOUR) <= 23) {
		mes "[길드 사무직원]";
		mes "길드 사무소에 오늘 하루 배포될 엠펠리움이 도착했습니다. 구매를 원하시면 원하는 만큼 담아주세요~";
		next;
		mes "[길드 사무직원]";
		mes "오늘은 왠지 엠펠리움을 찾는분들이 많을 것 같군요. 그냥 개인적인 기분입니다.";
		close2;                                                                                                         
    	callshop "emp_seller#slo";
		end;
    }
	mes "[길드 사무직원]";
	mes "저희 길드 사무소에서는 모험가님들의 원활한 모임을 적극 지지합니다";
	next;
	mes "[길드 사무직원]";
	mes "그 일환으로 ^0000ff월요일~토요일^000000";
	mes "매일 100개 한정수량의 <ITEM>엠펠리움<INFO>714</INFO></ITEM>을";
	mes "오후 ^0000ff18:00~23:59^000000 까지 판매하고 있습니다.";
	next;
	mes "[길드 사무직원]";
	mes "이외의 시간에는 저희 길드사무소도 엠펠리움 수급을 위해서 뛰어다녀야 하기 때문에 판매를 하지 않으니 참고하십시오.";
	close;
	
OnClock0000:
	if (gettime(DT_DAYOFWEEK) == 1) npcshopupdate "emp_seller#slo",714,0,100;
	end;
}
-	marketshop	emp_seller#slo	FAKE_NPC,714:1000000:100 // Need to check item price

image
Wedding shop dealer (changed coordinate & added ring for sell) link

prt_in,211,169,0	shop	Wedding Shop Dealer#prt	71,744:-1,745:-1,2338:-1,2206:-1,7170:-1

changed to:

prt_in,285,169,0	shop	Wedding Shop Dealer#prt	71,744:-1,745:-1,2338:-1,2206:-1,7170:-1,2613:-1

Family relationship guide - in progress

prt_in,285,167,3	script	인지와 반지각인#we	4_DR_F_01,{	// 1936
	mes "[에밀리]";
	mes "안녕하십니까, 선생님. 무엇을 도와드릴까요?";
	next;
	switch(select("여기선 뭘 하나요??:인지 구입:반지에 이름을 새겨 주세요.")) {
		case 1:
			mes "[디탈리]";
			mes "어떤 것에 대한 안내가 필요하십니까?";
			next;
			switch(select("인지:반지에 각인:안내는 필요 없어요.")) {
				case 1:
					mes "[디탈리]";
					mes "이곳에서는 인지가 부착된 혼인 서약서와 독립 인증서를 발급하고 있습니다.";
					next;
					mes "[디탈리]";
					mes "^0000cd결혼식에는 혼인 서약서^000000가, ^0000cd세대 분리에는 독립 인증서^000000를 소지하고 있어야 민원이 진행됩니다.";
					next;
					mes "[디탈리]";
					mes "필요하신 증서를 확인하신 후에 저에게 신청을 하시면 인지가 부착된 증서를 드립니다.";
					next;
					mes "[디탈리]";
					mes "어떤 것에 대한 안내가 필요하십니까?";
					close;
				case 2:
					mes "[디탈리]";
					mes "결혼식을 마치고 정식으로 부부가 되신 분들이 나눠 끼신 ^0000cd결혼 반지^000000를 가지고 오시면 ^0000cd소정의 비용만^000000을 받고 ^0000cd배우자분의 이름^000000을 새겨드립니다.";
					next;
					mes "[디탈리]";
					mes "평생을 간직할 소중한 추억이 되실 겁니다.";
					next;
					mes "[디탈리]";
					mes "어떤 것에 대한 안내가 필요하십니까?";
					close;
				case 3:
					mes "[디탈리]";
					mes "도움이 필요하면 언제든지 찾아 주시길 바랍니다.";
					close;
			}
		case 2:
			mes "[디탈리]";
			mes "어떤 인지의 구매를 도와드릴까요?";
			next;
			switch(select("혼인 서약서:독립 인증서")) {
				case 1:
					mes "[디탈리]";
					mes "죄송하지만 소지하신 금액이 부족합니다.";
					next;
					mes "[디탈리]";
					mes "인지가 부착된 혼인 서약서의 가격은 ^0000cd1,500,000제니^000000입니다.";
					next;
					mes "[디탈리]";
					mes "소지금을 확인하신 후 다시 이용해 주십시오.";
					close;
				case 2:
					mes "[디탈리]";
					mes "죄송하지만 독립 인증서는 자녀분이 있는 ^0000cd부모^000000이거나 독립 대상자인 ^0000cd베이비^000000인 경우에만 구입하실 수 있습니다.";
					close;
			}
		case 3:
			mes "[디탈리]";
			mes "죄송합니다. 결혼반지에 이름을 새겨드리는 서비스는 ^0000cd기혼자를 대상^000000으로 합니다.";
			close;
	}
}

Written Oath Of Marriage

prt_in,285,167,3	script	인지와 반지각인#we	4_DR_F_01,{	// 1936
	mes "[에밀리]";
	mes "안녕하십니까, 선생님. 무엇을 도와드릴까요?";
	next;
	switch(select("여기선 뭘 하나요??:인지 구입:반지에 이름을 새겨 주세요.")) {
		case 1:
			mes "[디탈리]";
			mes "어떤 것에 대한 안내가 필요하십니까?";
			next;
			switch(select("인지:반지에 각인:안내는 필요 없어요.")) {
				case 1:
					mes "[디탈리]";
					mes "이곳에서는 인지가 부착된 혼인 서약서와 독립 인증서를 발급하고 있습니다.";
					next;
					mes "[디탈리]";
					mes "^0000cd결혼식에는 혼인 서약서^000000가, ^0000cd세대 분리에는 독립 인증서^000000를 소지하고 있어야 민원이 진행됩니다.";
					next;
					mes "[디탈리]";
					mes "필요하신 증서를 확인하신 후에 저에게 신청을 하시면 인지가 부착된 증서를 드립니다.";
					next;
					mes "[디탈리]";
					mes "어떤 것에 대한 안내가 필요하십니까?";
					close;
				case 2:
					mes "[디탈리]";
					mes "결혼식을 마치고 정식으로 부부가 되신 분들이 나눠 끼신 ^0000cd결혼 반지^000000를 가지고 오시면 ^0000cd소정의 비용만^000000을 받고 ^0000cd배우자분의 이름^000000을 새겨드립니다.";
					next;
					mes "[디탈리]";
					mes "평생을 간직할 소중한 추억이 되실 겁니다.";
					next;
					mes "[디탈리]";
					mes "어떤 것에 대한 안내가 필요하십니까?";
					close;
				case 3:
					mes "[디탈리]";
					mes "도움이 필요하면 언제든지 찾아 주시길 바랍니다.";
					close;
			}
		case 2:
			mes "[디탈리]";
			mes "어떤 인지의 구매를 도와드릴까요?";
			next;
			switch(select("혼인 서약서:독립 인증서")) {
				case 1:
					mes "[디탈리]";
					mes "죄송하지만 소지하신 금액이 부족합니다.";
					next;
					mes "[디탈리]";
					mes "인지가 부착된 혼인 서약서의 가격은 ^0000cd1,500,000제니^000000입니다.";
					next;
					mes "[디탈리]";
					mes "소지금을 확인하신 후 다시 이용해 주십시오.";
					close;
				case 2:
					mes "[디탈리]";
					mes "죄송하지만 독립 인증서는 자녀분이 있는 ^0000cd부모^000000이거나 독립 대상자인 ^0000cd베이비^000000인 경우에만 구입하실 수 있습니다.";
					close;
			}
		case 3:
			mes "[디탈리]";
			mes "죄송합니다. 결혼반지에 이름을 새겨드리는 서비스는 ^0000cd기혼자를 대상^000000으로 합니다.";
			close;
	}
}

Divirce information

prt_in,285,165,5	script	이혼 안내#wedd	1_M_SIGNART,{	// 1935
	mes "[노튼]";
	mes "결혼도 안 한 사람이 이혼에 먼저 관심을 가지면 어떡하나요?";
	close;
}

Insurance heart changer, item: 6413계약의 심장
its working like Life Insurance but it is etc item and no need to use it, item disappears when the character dies and its duration time is unlimited.

prt_in,82,108,5	script	심장 상인#life01	4_M_NFDEADMAN2,5,5,{	// 884
	mes "[심장 상인]";
	mes "안녕하신가! 심장을 배 밖으로 내놓고, 대륙 곳곳을 누비며 위험천만한 스릴을 만끽하시는 모험가!";
	next;
	mes "[심장 상인]";
	mes "혹시 가지고 있는 <ITEM>["+getitemname(12209)+"]<INFO>12209</INFO></ITEM>를 더 좋은 물건으로 바꿀 생각 없어? 이를테면... <ITEM>["+getitemname(6413)+"]<INFO>6413</INFO></ITEM> 같은 걸로. 어때?";
	next;
	switch(select("그게 뭔데요?:교환해 주세요!:관심 없어요.")) {
		case 1:
			mes "[심장 상인]";
			mes "<ITEM>["+getitemname(12209)+"]<INFO>12209</INFO></ITEM>는 너희 산 자들이 사용 후 30분간 1회에 한해 사망시 경험치 감소를 받지 않게 해주는 물건이었지.";
			next;
			mes "[심장 상인]";
			mes "하지만 많은 사람들이 시간에 대한 부분을 아쉬워 하더라? 그래서 내가 그걸 보고 <ITEM>["+getitemname(6413)+"]<INFO>6413</INFO></ITEM>을 준비했지.";
			next;
			mes "[심장 상인]";
			mes "이 <ITEM>["+getitemname(6413)+"]<INFO>6413</INFO></ITEM>은 ^EE0000시간에 상관 없이 소지하는 것만으로도^000000 1회에 한해 사망시 경험치 감소를 받지 않게 해주는 물건이야. 물론 사망 후에 계약의 심장은 사라지지만 말이야.";
			next;
			select("왜 바꿔 주시나요?");
			mes "[심장 상인]";
			mes "그런게 궁금해? 나는 상인이야. 죽어서도 살아서도 물건을 사고 파는 것이 숙명이지. 돈이 될 일이 생겼는데 이런 기회를 내가 놓치겠어? 나는 돈을 벌고, 산 자들은 죽음의 고통에서 조금이라도 벗어나고. 좋은 거래잖아?";
			next;
			mes "[심장 상인]";
			mes "이쯤에서 궁금한 거 있지? 교환 비율 말이야. <ITEM>["+getitemname(12209)+"]<INFO>12209</INFO></ITEM> 5장당 <ITEM>["+getitemname(6413)+"]<INFO>6413</INFO></ITEM> 1개로 바꿔 줄게.";
			next;
			mes "[심장 상인]";
			mes "어때? 손해 보는 조건은 아니잖아? 굳이 시간에 신경 쓸 필요 있어? 아찔짜릿한 모험을 즐기는 모험가라면 필수로 갖춰야 하는 물건 이지. 암~";
			close;
		case 2:	
			mes "[심장 상인]";
			mes "그래, 그래. 잘 생각했어. 이왕 가지고 있는 걸 더 좋은 물건으로 교환하는 것이 낫지. 안그래?";
			next;
			mes "[심장 상인]";
			mes "^0000cd기존 증서 5장으로 계약의 심장 1개로^000000 바꿀 수 있어.";
			next;
			mes "[심장 상인]";
			mes "다만 ^EE0000[비매품]생명보험 증서는 교환 대상에서 제외^000000되니까 그걸 가지고 와서 바꿔 달라고 해도 소용 없어.";
			next;
			mes "[심장 상인]";
			mes "그럼 이제 교환해 볼까?";
			next;
			switch(select("교환해 주세요!:교환 안할래요.")) {
				case 1:
					mes "[심장 상인]";
					mes "몇 장 교환하고 싶어? ^0000cd한 번에 최대 10장까지 교환 가능^000000한데.";
					next;
					input .@amount;
					if (.@amount == 0) {
						mes "[심장 상인]";
						mes "음? 별로 관심 없나? 이거 정말 좋은 물건인데, 정말 좋은데. 그치만 살 사람이 싫다면 나도 강요는 안해.";
						close;
					} else if (.@amount > 10) {
						mes "[심장 상인]";
						mes "^0000cd한 번에 최대 10장^000000까지 바꿀 수 있댔잖아. 수량을 다시 확인해 봐.";
						close;
					} else {
						if (countitem(12209) < (.@amount*5)) {
							mes "[심장 상인]";
							mes "음, 저기... 네가 가진 생명보험 증서가 부족한데? <ITEM>[생명보험 증서]<INFO>12209</INFO></ITEM> 5장당 <ITEM>[계약의 심장]<INFO>6413</INFO></ITEM> 1개야. 수량을 확인해 봐.";
							close;
						}
						mes "[심장 상인]";
						mes "자, 이걸로 네가 가지고 있던 ^0000cd생명보험 증서^000000를 ^EE0000계약의 심장^000000으로 교환했다!! 좋은 거래였지, 그치? 다음에 증서가 생기면 또 찾아 오라고!";
						delitem 12209,.@amount*5;
						getitem 6413,.@amount;
						close;
					}
				case 2:
					mes "[심장 상인]";
					mes "이거 정말 좋은 조건인데! 모험가, 너처럼 이 위험천만한 곳에서 모험을 즐기려면 반드시 필요한 물건이라고!";
					next;
					mes "[심장 상인]";
					mes "나중에라도 관심이 생기면 꼭 교환하러 오기야. 알았지?";
					close;
			}
		case 3:
	mes "[심장 상인]";
	mes "이거 정말 좋은 조건인데! 모험가, 너처럼 이 위험천만한 곳에서 모험을 즐기려면 반드시 필요한 물건이라고!";
	next;
	mes "[심장 상인]";
	mes "나중에라도 관심이 생기면 꼭 교환하러 오기야. 알았지?";
	close;
	}
OnTouch:
	npctalk "좋은 걸 가지고 있구나. 가지고 있는 생명보험 증서를 새로운 걸로 바꿔 줄까?", "", bc_self;
	end;
}

need to modify src code:
add to itemdb.hpp 

	ITEMID_INSURANCE_HEART					= 6413, // Custom name

pc.cpp
int pc_dead(struct map_session_data *sd,struct block_list *src)
line 7917 change from

		if (base_penalty || job_penalty)
			pc_lostexp(sd, base_penalty, job_penalty);

to

		if (base_penalty || job_penalty) {
			short item_position = pc_search_inventory(sd, ITEMID_INSURANCE_HEART);
			if (item_position < 0)
				pc_lostexp(sd, base_penalty, job_penalty);
			else
				pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME);
		}

image.thumb.png.ae61261c3e26cd0515f16ecf7eb694df.png
Pet coupons changer // Need to change coupons check function 
Issue: 3498

prontera,210,209,5	script	펫 교환상인#wanderman	4_M_JPNOJI,{
	mes "[펫 교환상인]";
	mes "장사란 건 정말 쉬운일이 아니야.";
	mes "나는 멀미가 심한데 이번에는 오는 길에 풍랑까지 만났지 뭔가!";
	next;
	mes "[펫 교환상인]";
	mes "아찔한 경험이었지. 덕분에 아직까지도 속이 좋지 않아. 크으……";
	next;
	mes "[펫 교환상인]";
	mes "그 보다 자네 큐펫이 필요해서 온 겐가?";
	mes "티켓은 가지고 있겠지?";
	next;
	switch(select("소유한 티켓을 검사:취소")) {
	case 1: // custom simple dialogs and function
		setarray .@alloweditems[0],6116, 6117, 6118, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, 6137, 6138, 6139, 6140, 6141, 6142, 6143, 6157, 6158, 6159, 6160, 6161, 6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 7550, 7551, 7552, 7581, 7588, 7775;
		setarray .@allowedipets[0],9055, 9056, 9030, 9054, 9042, 9046, 9052, 9048, 9045, 9047, 9050, 9051, 9043, 9041, 9049, 9044, 9053, 9040, 9001, 9002, 9003, 9004, 9005, 9014, 9009, 9012, 9013, 9006, 9007, 9022, 9023, 9021, 9015, 9019, 9010, 9016, 9020, 9011, 9008, 9017, 9024, 9018, 9025, 9029, 9028, 9026, 9027, 9037, 9036, 9098, 9034, 9032, 9031;

		getinventorylist; // Need to change funktion to check for what coupons player have
		for(.@i = 0;.@i < @inventorylist_count;.@i++){
			if (compare(getitemname(@inventorylist_id[.@i])," Pet ")) {
					.@menu$ = .@menu$ + getitemname(@inventorylist_id[.@i])+":";
					.@new_id[.@count] = @inventorylist_id[.@i];
					.@count++;
			}
		}
		if (!.@count) {
			mes "[펫 교환상인]";
			mes "내가 원하는 물건은 없는 것 같네.";
			close;
		}
		mes "[펫 교환상인]";
		mes "What coupon you want to change?";
		next;
		.@select = select(.@menu$ + "Cancel") - 1;
		if (.@new_id[.@select] == 0) { 
			mes "[펫 교환상인]";
			mes "Good luck!";
			close;
		}
		mes "[펫 교환상인]";
		mes "Great!";
		mes getitemname(.@allowedipets[inarray(.@alloweditems[0], .@new_id[.@select])]);
		mes "Are you shure to want this pet?";
		next;
		if (select("Yes:No") == 2) close;
		mes "[펫 교환상인]";
		mes "Here your pet~";
		if (countitem(.@new_id[.@select]) < 1) close;
		delitem .@alloweditems[inarray(.@alloweditems[0], .@new_id[.@select])],1;
		getitem .@allowedipets[inarray(.@alloweditems[0], .@new_id[.@select])],1;
		close;
	case 2:
		mes "[펫 교환상인]";
		mes "바다 건너 얘기라도 듣고 싶은 모양이네만 속이 영 좋지 않구먼.";
		close;
	}
}

 

Sorry if i post it in wrong section >_<"

 

Edited by Balfear
  • Upvote 3
  • Love 1
  • MVP 2
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...