Jump to content

Akbare

Members
  • Posts

    491
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by Akbare

  1. thx for your reply but it didn't work till now
  2. //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6c //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //= 1.6c Replaced function 'A_An' with "F_InsertArticle". //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qsLegendShop"{,<shop ID>{,<shop ID>{,...}}}; // ADD YOUR NPC HERE //============================================================ prontera,139,225,6 script Quest Exchange#1 851,{ callfunc "qsLegendShop"; } // prontera,165,203,6 script Quest Shop#2 998,{ callfunc "qsLegendShop",1,2; } // call the shop 1 and 2 defined below // etc.. Add your Shop NPCs 'Quest Shop#XXX' here //============================================================ // Script Core - DO NOT DUPLICATE THIS NPC !!!!!!!!!!!!! //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,1; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0], "#CASHPOINTS", "Cash Points"; //===================================================================================== // ------------------- ADD YOUR SHOPS NAME AND ITEMS SHOPS STARTING HERE -------------- //===================================================================================== // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1], "legendary Quest Exchange"; // Shop Named 1 // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- // Shop 1 Add(1,2319,1,20000000,0,2317,4 ); // ----------------------------------------------------------- //===================================================================================== // ------------------- YOUR SHOPS AND ITEMS SHOPS HAVE BEEN ADDED --------------------- //===================================================================================== freeloop(0); set .menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qsLegendShop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set @shop_index, select(.menu$); else if (.@size == 1) set @shop_index, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set @shop_index, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[@shop_index] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qsLegendShop"+@shop_index,1; npcshopattach "qsLegendShop"+@shop_index; end; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0])); set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; disable_items; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOCATIONS), getiteminfo(.@q[0], ITEMINFO_VIEW); if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT))) set .@preview,1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0], ITEMINFO_WEIGHT))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; getitem .@q[0],.@q[2]; if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0; specialeffect2 EF_FLOWERLEAF; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); npcshopadditem "qsLegendShop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } } function script qsLegendShop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qsLegendShop1 -1,909:-1 My problem is the requirements Slot item not showing set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) change to 1 or 2 not effect in script maybe someone can help me thx to advance SOLVED i'm use OLD version script THX ALL
  3. https://github.com/rathena/rathena#2-installation
  4. wow like it to bard and dancer job btw your UI look greats
  5. you ask for spriting item or script ? please more info not everyone can understand what you are saying
  6. try edit in : db/mob_item_ratio.txt
  7. why want to delete it? to change message maybe in data/msgstringtable.txt line 3251
  8. login in phpmyadmin, remove item_db2 table and import new item_db2 again
  9. i want to ask how to change this VIP message msgstringtable.txt line 3033 %.1f%% (VIP %.1f%% + Server %.1f%%)# i found this code but i'dont know how to change /** * Transmit personal information to player. (rates) * 0x08cb <packet len>.W <exp>.W <death>.W <drop>.W <DETAIL_EXP_INFO>7B (ZC_PERSONAL_INFOMATION) * <InfoType>.B <Exp>.W <Death>.W <Drop>.W (DETAIL_EXP_INFO 0x08cb) * 0x097b <packet len>.W <exp>.L <death>.L <drop>.L <DETAIL_EXP_INFO>13B (ZC_PERSONAL_INFOMATION2) * 0x0981 <packet len>.W <exp>.W <death>.W <drop>.W <activity rate>.W <DETAIL_EXP_INFO>13B (ZC_PERSONAL_INFOMATION_CHN) * <InfoType>.B <Exp>.L <Death>.L <Drop>.L (DETAIL_EXP_INFO 0x97b|0981) * FIXME! * - Find/decide for details of EXP, Drop, and Death penalty rates * - For now, we're assuming values for DETAIL_EXP_INFO are: * 0 - map adjustment (bexp mapflag), 1 - Premium/VIP adjustment, 2 - Server rate adjustment, 3 - None */ #ifdef VIP_ENABLE void clif_display_pinfo(struct map_session_data *sd, int cmdtype) { if (sd) { struct s_packet_db* info; int16 len, szdetails = 13, maxinfotype = PINFO_MAX; int cmd = 0, fd, i = 0; int tot_baseexp = 100, tot_penalty = 100, tot_drop = 100, factor = 1000; int details_bexp[PINFO_MAX]; int details_drop[PINFO_MAX]; int details_penalty[PINFO_MAX]; /** * Set for EXP */ //0:PCRoom details_bexp[0] = map_getmapflag(sd->bl.m, MF_BEXP); if (details_bexp[0] == 100 || !details_bexp[0]) details_bexp[0] = 0; else { if (details_bexp[0] < 100) { details_bexp[0] = 100 - details_bexp[0]; details_bexp[0] = 0 - details_bexp[0]; } else details_bexp[0] = details_bexp[0] - 100; } //1:Premium if (pc_isvip(sd)) { details_bexp[1] = battle_config.vip_base_exp_increase * 10; if (details_bexp[1] < 0) details_bexp[1] = 0 - details_bexp[1]; } else details_bexp[1] = 0; //2:Server details_bexp[2] = battle_config.base_exp_rate; if (details_bexp[2] == 100) details_bexp[2] = 0; else { if (details_bexp[2] < 100) { details_bexp[2] = 100 - details_bexp[2]; details_bexp[2] = 0 - details_bexp[2]; } else details_bexp[2] = details_bexp[2] - 100; } //3:TPLUS details_bexp[3] = 0; /* End - EXP set*/ /** * Set for Drop rate */ //0:PCRoom details_drop[0] = 0; //1:Premium details_drop[1] = (battle_config.vip_drop_increase * battle_config.item_rate_common) / 100; if (pc_isvip(sd)) { if (details_drop[1] < 0) details_drop[1] = 0 - details_drop[1]; } else details_drop[1] = 0; //2:Server details_drop[2] = battle_config.item_rate_common; if (details_drop[2] == 100) details_drop[2] = 0; else { if (details_drop[2] < 100) { details_drop[2] = 100 - details_drop[2]; details_drop[2] = 0 - details_drop[2]; } else details_drop[2] = details_drop[2] - 100; } //3:TPLUS details_drop[3] = 0; /* End - Drop set*/ /** * Set for Penalty rate */ //! FIXME: Current penalty system makes this announcement unable to give info on + or - rate //0:PCRoom details_penalty[0] = 0; //1:Premium if (pc_isvip(sd)) { details_penalty[1] = battle_config.vip_exp_penalty_base; if (details_penalty[1] == 100) details_penalty[1] = 0; else { if (details_penalty[1] < 100) { details_penalty[1] = 100 - details_penalty[1]; details_penalty[1] = 0 - details_penalty[1]; } else details_penalty[1] = details_penalty[1] - 100; } } else details_penalty[1] = 0; //2:Server details_penalty[2] = battle_config.death_penalty_base; if (details_penalty[2] == 100) details_penalty[2] = 0; else { if (details_penalty[2] < 100) { details_penalty[2] = 100 - details_penalty[2]; details_penalty[2] = 0 - details_penalty[2]; } else details_penalty[2] = details_penalty[2] - 100; } //3:TPLUS details_penalty[3] = 0; /* End - Penalty set*/ cmd = packet_db_ack[cmdtype]; info = &packet_db[cmd]; len = info->len; //this is the base len without details if(!len) return; //version as packet disable if (cmdtype == ZC_PERSONAL_INFOMATION && cmd == 0x08cb) { //0x08cb version szdetails = 7; factor = 1; } else if (cmd == 0x097b) { tot_baseexp *= factor; tot_drop *= factor; tot_penalty *= factor; } fd = sd->fd; WFIFOHEAD(fd,len+maxinfotype*szdetails); WFIFOW(fd,0) = cmd; for (i = 0; i < maxinfotype; i++) { WFIFOB(fd,info->pos[4]+(i*szdetails)) = i; //infotype //0 PCRoom, 1 Premium, 2 Server, 3 TPlus WFIFOL(fd,info->pos[5]+(i*szdetails)) = details_bexp[i]*factor; WFIFOL(fd,info->pos[6]+(i*szdetails)) = details_penalty[i]*factor; WFIFOL(fd,info->pos[7]+(i*szdetails)) = details_drop[i]*factor; tot_baseexp += details_bexp[i]*factor; tot_drop += details_penalty[i]*factor; tot_penalty += details_drop[i]*factor; len += szdetails; } WFIFOW(fd,info->pos[0]) = len; //packetlen if (cmd == 0x08cb) { //0x08cb version WFIFOW(fd,info->pos[1]) = tot_baseexp; WFIFOW(fd,info->pos[2]) = tot_drop; WFIFOW(fd,info->pos[3]) = tot_penalty; } else { //2013-08-07aRagexe uses 0x097b WFIFOL(fd,info->pos[1]) = tot_baseexp; WFIFOL(fd,info->pos[2]) = tot_drop; WFIFOL(fd,info->pos[3]) = tot_penalty; } if (cmdtype == ZC_PERSONAL_INFOMATION_CHN) WFIFOW(fd,info->pos[8]) = 0; //activity rate case of event ?? WFIFOSET(fd,len); } } #endif i thought it was arround this part for (i = 0; i < maxinfotype; i++) { WFIFOB(fd,info->pos[4]+(i*szdetails)) = i; //infotype //0 PCRoom, 1 Premium, 2 Server, 3 TPlus WFIFOL(fd,info->pos[5]+(i*szdetails)) = details_bexp[i]*factor; WFIFOL(fd,info->pos[6]+(i*szdetails)) = details_penalty[i]*factor; WFIFOL(fd,info->pos[7]+(i*szdetails)) = details_drop[i]*factor; tot_baseexp += details_bexp[i]*factor; tot_drop += details_penalty[i]*factor; tot_penalty += details_drop[i]*factor; len += szdetails; } i want to change like this one with VIP premium before VIP active When VIP thx for advance
  10. Se ha ajustado la actualización de la función lapine en github
  11. for 2018 just select recomended in nemo I'm sure it works
  12. I'm sure import all the sql files, or maybe you can tell in which file SOLVED: i'm use old rAthena sql
  13. try move to other drive to C
  14. i use https://github.com/rathena/FluxCP my character menu have a error how to solve? thx for advanced
  15. maybe you can provide information on the emulator and the hexed used
  16. im use https://github.com/rathena/FluxCP/pull/275 but still error
×
×
  • Create New...