Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/25/22 in all areas

  1. Go to skill.cpp and do this: case MO_BODYRELOCATION: + if ( map_count_oncell(src->m,x,y,BL_NPC,0) ) { + clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); + return 0; + } if (unit_movepos(src, x, y, 2, 1)) { #if PACKETVER >= 20111005 clif_snap(src, src->x, src->y); Dont forget to recompile
    1 point
  2. Hi, Im having trouble compiling rathena. I have changed distros from Debian 10, Pop os, Debian 11. All are having these errors. Can someone point out what might be the problem? gcc version is 10.x.x. I have also downgraded my gcc to 5.x and 7, but for some reason debian won't let me do it. errors everywhere.
    1 point
  3. Hello, everyone! I'm Lynx of SolaceRO. I'm sharing our old database that's worth 1 month of research and application. I used to own SorinRO back in 2016. It's at episode 6 when it died. In our database, we have corrected the mob stats, drop, and spawns. Please keep in mind that this is not 100% accurate to the official server. I have used the following references: Leaked Aegis files for RussiaRO and MalaysiaRO WoE and Juno Guidebook (based on PhilippineRO) Old emulators (Fusion, Vidar, Freya, jAthena, etc.) P.S. Use it at your own risk. Review the files before implementing. SorinRO EP5 Spawn & Mob_Db.zip
    1 point
  4. @iAmGnome You forgot about the important additional step. If you want to hide the IP of main VPS - you need to prevent sending real IP in network packets from login and char servers. Because if you will just apply the patch of EXE - game client will not use these IPs from network packets. But players will be able to find real IP by using any network sniffer. Open "../conf/subnet_athena.conf" and change: subnet: 255.0.0.0:127.0.0.1:127.0.0.1 to: subnet: 0.0.0.0:127.0.0.1:127.0.0.1
    1 point
  5. 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: 3681, Issue: 3772, Issue: 3498 Not all scripts are complited yet, but i will update it when I find more information/test it in kRo. Missed shop with hats prt_in,117,79,5 shop 장난감상인#prt 715,2239:-1,2201:-1,2243:-1,2212:-1,2242:-1,2241:-1 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 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 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: 계약의 심장 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); } 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 >_<"
    1 point
  6. Greetings, everyone. New content for Valentine's Day were added: Valentine's Day 32bit Headgear Auras All of them available in 12 colours. And if you haven't had the time, I've also recently added a new freebie:
    1 point
  7. Version 1.0.0

    647 downloads

    illust's for a system of daily rewards, created by me, based on the official theme of ragnarok online. It works with the script [rathena]: Daily_Reward_System PS: If you like it, and give me reputation, it's important to me and encourages me to continue with my work! best regards, ZelosAvalon
    Free
    1 point
×
×
  • Create New...