Jump to content

backtea

Members
  • Posts

    56
  • Joined

  • Last visited

Everything posted by backtea

  1. charm's ?? what's that? can you descrip more?
  2. hey please help.. i got this error when try to compile the server 1>------ Build started: Project: map-server_sql, Configuration: Debug Win32 ------ 1> faction.c 1>d:\campur\coba server\rathena 16433\src\map\faction.c(439): error C2143: syntax error : missing ')' before 'constant' 1>d:\campur\coba server\rathena 16433\src\map\faction.c(439): error C2059: syntax error : ')' here's my faction.c // Ñèñòåìà ôðàêöèé (c) Lilith // Íå êîïèðîâàòü, íå èçìåíÿòü è íå îïóáëèêîâûâàòü áåç ðàçðåøåíèÿ #include "../common/db.h" #include "../common/malloc.h" #include "../common/socket.h" #include "../common/showmsg.h" #include "../common/strlib.h" #include "../common/nullpo.h" #include "faction.h" #include "elemental.h" #include "homunculus.h" #include "map.h" #include "mercenary.h" #include "mob.h" #include "npc.h" #include "pc.h" #include "pet.h" #include "skill.h" #include "script.h" #include <stdlib.h> static DBMap* faction_db; static DBMap* aura_db; int faction_get_exp(struct map_session_data *sd,struct map_session_data *tsd) { struct faction_data* db, *t_db; db = faction_search(sd->status.faction_id); t_db = faction_search(tsd->status.faction_id); if( db == NULL || t_db == NULL ) return 0; return 0; } // Àóðà ìàñòåðà ôðàêöèè ( àíàëîã àóðû ãëàâû ãèëüäèè ) void faction_factionaura(struct map_session_data *sd) { struct skill_unit_group* group = NULL; if( sd->sc.data[sC_FACTION_AURA] && (group = skill_id2group(sd->sc.data[sC_FACTION_AURA]->val4)) ) { skill_delunitgroup(group); status_change_end(&sd->bl,SC_FACTION_AURA,INVALID_TIMER); } group = skill_unitsetting(&sd->bl,FACTION_AURA,1,sd->bl.x,sd->bl.y,0); if( group ) sc_start4(&sd->bl,SC_FACTION_AURA,100,1,group->faction_id,0,group->group_id,600000); return; } // Îòîáðàæåíèå çíà÷êà áèòâû íàä ãîëîâîé void faction_sendemblem_area(struct map_session_data *sd) { struct faction_data* db = faction_search(sd->status.faction_id); unsigned char buf[33]; nullpo_retv(sd); WBUFW(buf, 0) = 0x2dd; WBUFL(buf,2) = sd->bl.id; safestrncpy((char*)WBUFP(buf,6), sd->status.name, NAME_LENGTH); WBUFW(buf,30) = ( db->alliance_id ? db->alliance_id : sd->status.faction_id ); clif_send(buf,packet_len(0x2dd), &sd->bl, AREA); } // Îòîáðàæåíèå çíà÷êà áèòâû íàä ãîëîâîé void faction_sendemblem_single(int fd, struct map_session_data *sd) { struct faction_data* db = faction_search(sd->status.faction_id); nullpo_retv(sd); WFIFOHEAD(fd,32); WFIFOW(fd,0) = 0x2dd; WFIFOL(fd,2) = sd->bl.id; safestrncpy((char*)WFIFOP(fd,6), sd->status.name, NAME_LENGTH); WFIFOW(fd,30) = ( db->alliance_id ? db->alliance_id : sd->status.faction_id ); WFIFOSET(fd,packet_len(0x2dd)); } // Îòîáðàæåíèå àóðû íîñèòåëÿ void faction_aura_load(struct map_session_data *tsd, struct map_session_data *sd) { struct faction_data* db = faction_search(tsd->status.faction_id); struct aura_data* a_db = aura_search(tsd->status.faction_id); int e1,e2,e3; if( pc_ishiding(tsd) || !map[tsd->bl.m].flag.fvf || a_db == NULL ) return; if( (e1 = a_db->effect_1) ) clif_specialeffect_single(&tsd->bl, e1, sd->fd); // Ýôôåêò #1 if( (e2 = a_db->effect_2) ) clif_specialeffect_single(&tsd->bl, e2, sd->fd); // Ýôôåêò #2 if( (e3 = a_db->effect_3) ) clif_specialeffect_single(&tsd->bl, e3, sd->fd); // Ýôôåêò #3 } // Îòîáðàæåíèå àóðû âñåì â çîíå type void faction_aura_send(struct map_session_data *sd, enum send_target type) { struct faction_data* db = faction_search(sd->status.faction_id); struct aura_data* a_db = aura_search(sd->status.faction_id); int e1,e2,e3; if( pc_ishiding(sd) || !map[sd->bl.m].flag.fvf || a_db == NULL ) return; if( (e1 = a_db->effect_1) ) clif_specialeffect(&sd->bl, e1, type); // Ýôôåêò #1 if( (e2 = a_db->effect_2) ) clif_specialeffect(&sd->bl, e2, type); // Ýôôåêò #2 if( (e3 = a_db->effect_3) ) clif_specialeffect(&sd->bl, e3, type); // Ýôôåêò #3 } // Ñîêðûòèå àóðû íîñèòåëÿ ( åñëè íîñèòåëü â õàéäå) int faction_aura_update(struct block_list *bl,va_list ap) { struct block_list *tbl = va_arg(ap,struct block_list*); struct map_session_data *sd = BL_CAST(BL_PC,bl); if( bl == tbl || tbl->type != BL_PC || !sd ) return 0; clif_getareachar_unit(sd,tbl); return 0; } // Ðàñ÷¸ò óðîíà íà òåððèòîðèè âîéíû ôðàêöèé int faction_calc_damage(struct block_list *src, struct block_list *bl, int damage, int div_, int skill_num, int skill_lv, int flag) { if( damage ) switch( skill_num ) { case PA_PRESSURE: case HW_GRAVITATION: case NJ_ZENYNAGE: break; default: if( flag&BF_SKILL ) { if( flag&BF_WEAPON ) damage = damage * battle_config.fvf_weapon_damage_rate/100; if( flag&BF_MAGIC ) damage = damage * battle_config.fvf_magic_damage_rate/100; if( flag&BF_MISC ) damage = damage * battle_config.fvf_misc_damage_rate/100; } else { if( flag&BF_SHORT ) damage = damage * battle_config.fvf_short_damage_rate/100; if( flag&BF_LONG ) damage = damage * battle_config.fvf_long_damage_rate/100; } if( !damage ) damage = 1; } return damage; } // Ïðèñâàèâàíèå âèçóàëüíîãî ðàçìåðà â çàâèñèìîñòè îò ëîêàöèè void faction_display_size(struct map_session_data *sd) { struct faction_data* db = faction_search(sd->status.faction_id); if( db ) { if( map[sd->bl.m].flag.fvf ) sd->state.size = db->size; else { sd->state.size = (sd->class_&JOBL_BABY)?1:0; if (battle_config.character_size && pc_isriding(sd)) { if (sd->class_&JOBL_BABY) { if (battle_config.character_size&SZ_BIG) sd->state.size++; } else if(battle_config.character_size&SZ_MEDIUM) sd->state.size++; } } } } // Îòîáðàæåíèå HP ïåðñîíàæåé îäíîé ôðàêöèè void faction_show_hp(struct map_session_data *sd) { unsigned char buf[34]; const int cmd = 0x2e0; nullpo_retv(sd); WBUFW(buf,0) = cmd; WBUFL(buf,2) = sd->status.account_id; memcpy(WBUFP(buf,6), sd->status.name, NAME_LENGTH); if( sd->battle_status.max_hp > INT16_MAX ) { WBUFW(buf,30) = sd->battle_status.hp/(sd->battle_status.max_hp/100); WBUFW(buf,32) = 100; } else { WBUFW(buf,30) = sd->battle_status.hp; WBUFW(buf,32) = sd->battle_status.max_hp; } clif_send(buf, packet_len(cmd), &sd->bl, FACTION_AREA_WOS); } // Ïîèñê ID ôðàêöèè struct faction_data* faction_search(int id) { return (struct faction_data*)idb_get(faction_db,id); } // Ïîèñê ID àóðû struct aura_data* aura_search(int id) { return (struct aura_data*)idb_get(aura_db,id); } // Âîçâðàùåíèå ID ôðàêöèè int faction_get_id(struct block_list* bl) { if( bl ) switch( bl->type ) { case BL_PC: // Èãðîê return ((TBL_PC*)bl)->status.faction_id; case BL_PET: // Ïèòîìåö if( ((TBL_PET*)bl)->msd ) return ((TBL_PET*)bl)->msd->status.faction_id; break; case BL_MOB: // Ìîíñòð { struct map_session_data *msd; struct mob_data *md = (TBL_MOB*)bl; if( md->special_state.ai && (msd = map_id2sd(md->master_id)) != NULL ) return msd->status.faction_id; return md->faction_id; } case BL_HOM: // Ãîìóíêóëóñ if( ((TBL_HOM*)bl)->master ) return ((TBL_HOM*)bl)->master->status.faction_id; break; case BL_MER: // Íà¸ìíèê if( ((TBL_MER*)bl)->master ) return ((TBL_MER*)bl)->master->status.faction_id; break; case BL_ELEM: // Ýëåìåíòàëü if( ((TBL_ELEM*)bl)->master ) return ((TBL_ELEM*)bl)->master->status.faction_id; break; case BL_SKILL: // Íàâûê return ((TBL_SKILL*)bl)->group->faction_id; } return 0; } // Ïðîâåðêà íà àëüÿíñ int faction_check_alliance(struct block_list* bl, struct block_list* t_bl) { struct faction_data* db, *t_db; db = faction_search(faction_get_id(bl)); t_db = faction_search(faction_get_id(t_bl)); if( db == NULL || t_db == NULL ) return 0; if( db->alliance_id > 0 && db->alliance_id == t_db->alliance_id ) return 1; return 0; } // Ïðèñâàèâàíèå ðàñû, ýåëåìåíòà, óð. ýëåìåíòà, ðàçìåðà è îïðåäåë¸ííîãî áîíóñà void faction_calc(struct map_session_data *sd) { struct status_data *status = &sd->base_status; struct status_change *sc = &sd->sc; struct faction_data* db; if( (db = faction_search(sd->status.faction_id)) == NULL ) return; status->race = db->race; // Ðàñà status->def_ele = db->ele; // Ýëåìåíò status->ele_lv = db->ele_lvl; // Óðîâåíü ýëåìåíòà status->size = db->size; // Ðàçìåð if( db->script ) run_script(db->script,0,sd->bl.id,0); // Áîíóñ if( sc && sc->data[sC_FACTION_AURA] && sc->data[sC_FACTION_AURA]->val2 ) { struct faction_data* mdb = faction_search(sc->data[sC_FACTION_AURA]->val2); if( mdb->aura_bonus ) run_script(mdb->aura_bonus,0,sd->bl.id,0); // Áîíóñ àóðû } { struct item_data *item_data; int i; for( i = 0; i < MAX_RELIC; i++ ) { if( (item_data = itemdb_exists(db->relic[i])) ) { if( item_data->script ) run_script(item_data->script,0,sd->bl.id,0); // Áîíóñ ðåëèêâèè } } } } // ×òåíèå ôàéëà êîíôèãóðàöèè // <ID>,<Íàçâàíèå ôðàêöèè>,<Ðàñà>,<Ýëåìåíò>,<Óðîâåíü ýëåìåíòà>,<Ðàçìåð>,<ID Àëüÿíñà>,<ID Àóðû>,<Öâåò ñîîáùåíèé â ÷àòå>,<{ Áîíóñ }>,<{ Áîíóñ àóðû }> static int faction_readdb(void) { struct faction_data* db; const char* filename = "faction_db.txt"; uint32 lines = 0, count = 0; char line[1024], path[256]; FILE* fp; sprintf(path, "%s/%s", db_path, filename); if((fp = fopen(path, "r")) == NULL ) { ShowWarning("faction_readdb: Ôàéë íå íàéäåí \"%s\", ïðîïóñê.\n", path); return 0; } while(fgets(line, sizeof(line), fp)) { char *str[32], *p; int i, id, race, ele, ele_lvl, all_id, aura, size; unsigned long chat_color; lines++; if(line[0] == '/' && line[1] == '/') continue; memset(str, 0, sizeof(str)); p = line; while( ISSPACE(*p) ) ++p; if( *p == '\0' ) continue; for( i = 0; i < 9; ++i ) { str[i] = p; p = strchr(p,','); if( p == NULL ) break; *p = '\0'; ++p; } if( p == NULL ) { ShowError("faction_readdb: Ïóñòûå ïîëÿ â ñòðîêå %d ôàéëà \"%s\" (ðàñà %d), ïðîïóñê.\n", lines, path, atoi(str[0])); continue; } // Óíèêàëüíûé ID id = atoi(str[0]); if( id < 1 || id > MAX_FACTION ) { ShowError("faction_readdb : Íåâåðíûé ID ôðàêöèè %d.\n", id); continue; } else if( faction_search(id) ) { ShowError("faction_readdb : Äóáëèðîâàíèå ID %d, ñòðîêà %d.\n", id, lines); continue; } // Ðàñà race = atoi(str[2]); if( race < RC_FORMLESS || race > RC_DRAGON ) { ShowError("faction_readdb : Íåèçâåñòíàÿ ðàñà %d.\n", race); continue; } // Ýëåìåíò ele = atoi(str[3]); if( ele < ELE_NEUTRAL || ele > ELE_UNDEAD ) { ShowError("faction_readdb : Íåèçâåñòíûé ýëåìåíò %d.\n", ele); continue; } // Óðîâåíü ýëåìåíòà ele_lvl = atoi(str[4]); if( ele_lvl < 1 || ele_lvl > 4 ) { ShowError("faction_readdb : Íåâåðíûé óðîâåíü ýëåìåíòà %d.\n", ele_lvl); continue; } // Ðàçìåð size = atoi(str[5]); if( size < 0 || size > 2 ) { ShowError("faction_readdb : Íåâåðíûé ðàçìåð %d.\n", size); continue; } // ID àëüÿíñà all_id = atoi(str[6]); if( all_id < 0 ) { ShowError("faction_readdb : Íåâåðíûé ID àëüÿíñà %d\n", all_id); continue; } all_id += MIN_FACTION_ALLIANCE; // ID àóðû aura = atoi(str[7]); if( aura < 0 ) { ShowError("faction_readdb : Íåâåðíûé ID àóðû %d.\n", aura); continue; } // Öâåò ñîîáùåíèé â ÷àòå chat_color = strtoul(str[8],NULL,0); // RGB -> BGR chat_color = (chat_color&0x0000FF)<<16|(chat_color&0x00FF00)|(chat_color&0xFF0000)>>16; // Áîíóñ if( *p != '{' ) { ShowError("faction_readdb: Íåâåðíûé ôîðìàò (Ïîëå áîíóñà) â ñòðîêå %d ôàéëà \"%s\" (ðàñà %d), ïðîïóñê.\n", lines, path, atoi(str[0])); continue; } str[9] = p; p = strstr(p+1,"},"); if( p == NULL ) { ShowError("faction_readdb: Invalid format (OnEquip_Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } p[1] = '\0'; p += 2; // Áîíóñ àóðû if( *p != '{' ) { ShowError("faction_readdb: Invalid format (OnUnequip_Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } str[10] = p; p = strstr(p+1,"}"); if ( strchr(p,',') != NULL ) { ShowError("faction_readdb: Extra columns in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } CREATE(db,struct faction_data,1); // Ñîçäàíèå db->id = id; // Óíèêàëüíûé ID safestrncpy(db->name,str[1],sizeof(db->name)); // Íàçâàíèå ôðàêöèè db->race = race; // Ðàñà db->ele = ele; // Ýëåìåíò db->ele_lvl = ele_lvl; // Óðîâåíü ýëåìåíòà db->size = size; // Ðàçìåð db->alliance_id = all_id; // ID àëüÿíñà db->aura_id = aura; // ID àóðû db->chat_color = chat_color; // Öâåò ñîîáùåíèé â ÷àòå db->script = parse_script(str[9],path,lines,0); // Áîíóñ db->aura_bonus = parse_script(str[10],path,lines,0); // Áîíóñ àóðû idb_put(faction_db,id,db); // Ñîõðàíåíèå count++; } fclose(fp); ShowStatus("Çàêîí÷åíî ÷òåíèå '"CL_WHITE"%lu"CL_RESET"' ñòðîê â ôàéëå '"CL_WHITE"%s"CL_RESET"'.\n", count, filename); return 0; } // ×òåíèå ôàéëà êîíôèãóðàöèè // <ID àóðû>,<ýôôåêò #1>,<ýôôåêò #2>,<ýôôåêò #3> static int faction_readauradb(void) { struct aura_data* db; const char* filename = "faction_aura_db.txt"; uint32 lines = 0, count = 0; char line[1024], path[256]; FILE* fp; sprintf(path, "%s/%s", db_path, filename); if((fp = fopen(path, "r")) == NULL ) { ShowWarning("faction_readauradb: Ôàéë íå íàéäåí \"%s\", ïðîïóñê.\n", path); return 0; } while(fgets(line, sizeof(line), fp)) { char *str[32], *p; int i, id; lines++; if(line[0] == '/' && line[1] == '/') continue; memset(str, 0, sizeof(str)); p = line; while( ISSPACE(*p) ) ++p; if( *p == '\0' ) continue; for( i = 0; i < 3; ++i ) { str[i] = p; p = strchr(p,','); if( p == NULL ) break; *p = '\0'; ++p; } if( p == NULL ) { ShowError("faction_readauradb: Ïóñòûå ïîëÿ â ñòðîêå %d ôàéëà \"%s\" (ID: %d), ïðîïóñê.\n", lines, path, atoi(str[0])); continue; } // Óíèêàëüíûé ID id = atoi(str[0]); if( id < 1 ) { ShowError("faction_readauradb : Íåâåðíûé ID àóðû %d.\n", id); continue; } else if( aura_search(id) ) { ShowError("faction_readauradb : Äóáëèðîâàíèå ID %d, ñòðîêà %d.\n", id, lines); continue; } str[3] = p; CREATE(db,struct aura_data,1); // Ñîçäàíèå db->id = id; // Óíèêàëüíûé ID db->effect_1 = atoi(str[1]); // Ýôôåêò #1 db->effect_2 = atoi(str[2]); // Ýôôåêò #2 db->effect_3 = atoi(str[3]); // Ýôôåêò #3 idb_put(aura_db,id,db); // Ñîõðàíåíèå count++; } fclose(fp); ShowStatus("Çàêîí÷åíî ÷òåíèå '"CL_WHITE"%lu"CL_RESET"' ñòðîê â ôàéëå '"CL_WHITE"%s"CL_RESET"'.\n", count, filename); return 0; } // Î÷èñòêà ïàìÿòè static int faction_db_destroy(DBKey key, DBData *data, va_list ap) { struct faction_data *db = (struct faction_data*)data; if( db->script ) { script_free_code(db->script); db->script = NULL; } return 0; } // Çàãðóçêà ñèñòåìû ôðàêöèé void do_init_faction(void) { faction_db = idb_alloc(DB_OPT_BASE); aura_db = idb_alloc(DB_OPT_BASE); faction_readdb(); // ×òåíèå äàííûõ î ôðàêöèÿõ faction_readauradb(); // ×òåíèå äàííûõ îá àóðàõ } // Î÷èñòêà ïàìÿòè void do_final_faction(void) { faction_db->destroy(faction_db,faction_db_destroy); aura_db->destroy(aura_db,NULL); }
  3. bump..anyone have simple script like this?
  4. already done patch it, but seem's it's not working..anyone have simple script about this topic?
  5. i don't know how to manually patch it..coz it's seems different lines in my src folder... can any one help me to manually patch it? bump
  6. sorry i'am nubie when i follow this http://rathena.org/wiki/Diff Windows: 1. go place the folder in the index folder 2. richt click the *.diff file and go to TortoiseSVN menu 3. click patch i get this message D:\Beginer athena' is not working copy where i should path the patch file? in src folder or in index folder?
  7. where i must put the clan.diff?
  8. how about the npc? i mean where i must put the clan.diff? how to player to choose the clan?
  9. can anybody help me? the script is like, when you talk to npc you will give 2 choice 1. Elf clan 2. Dwarf clan when you choose Elf clan, that clan will give you matk+100 mdef-30 and when you choose Dwarf clan, that clan will give you atk+100 def-30 can anyone help me? thx for your help
  10. bump..i need to when uneequip
  11. i saw http://www.eathena.ws/board/index.php?showtopic=217704&st=0 is that still work?
  12. no..the castle not owned by any guild... so how to disable some castle for my WOE?
  13. hi all could you help me with my emperium... my emperium always show even i use npc woe...and i can't disable all castle from woe time... how to fix this? please help
  14. it's already, but the script error when i attack the monster it's said arround this line OnDo: callfunc "Minner",1; end;
  15. hai, anybody here know why my server got this [info]: Connection Closed. No map servers available. i start my server and play, buat when i play for couple time and the problem comes, all player goes to DC and my server log say [info]: Connection Closed. No map servers available. anybody can help? sorry for bad english
  16. can anyone help me with this script? when i attack mineral monster it's say error in log server also i can't get the item prontera,150,150,5 script Mining Engineer 848,{ mes "Hello " + strcharinfo(0) + ", would you like to rent mining items?"; if( select( "Yes:No" ) == 1) rentitem 6010, 3600; mes "Do you want to warp to the mining field right now?"; mes "Warping will cost 5,000,000"; if( select( "Yes:No" ) == 2) goto L_exit; if( Zeny < 5000000 ) { mes "Not enough Zeny."; close; } attachnpctimer strcharinfo(0); initnpctimer; callfunc("MiningTimer"); warp "ordeal_1-1",149,158; end; OnTimer3600000: warp "SavePoint", 0, 0; OnTimerQuit: stopnpctimer; set mining_start, 0; end; L_exit: mes "Ok, cya..."; close; } function script Minner { if(getarg(0) == 2) { undisguise; if(strcharinfo(3) == "ordeal_1-1") warp "SavePoint", 0, 0; end; } if(getarg(0) == 1 && strcharinfo(3) == "ordeal_1-1") { if(getequipid(4) != 6010 || getequipid(1) != 5009) end; if(rand(1000) < 800) getitem 1010, 1; if(rand(1000) < 700) getitem 1011, 1; if(rand(1000) < 400) getitem 984, 1; if(rand(1000) < 400) getitem 985, 1; specialeffect2 154; end; } bonus bAspd, -30; bonus bCritical, 100; bonus bAtkRate, -100; if(getequipid(1) == 5009) disguise 848; else undisguise; return; } - script Minnerx -1,{ OnDo: callfunc "Minner",1; end; OnLill: set .@t,1; OnInit: if(!.@t) set .@t,100; monster "ordeal_1-1",0,0,"--ja--",1907,.@t,"Minnerx::OnLill"; end; } //=========== TIMER SHOW ==================== <header>,{ mes "^66CCFF[Mining Area]^000000"; mes "Mining Time Limit:"; mes "^FF0000" + mine_day$ + "/" + mine_month$ + "/" + mine_year$ + " " + mine_hour$ + ":" + mine_minute$ + "^000000"; close; } //=========================================== function script MiningTimer { setarray .@daymonth[0], 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; set mine_minute$, ( (gettime(2) < 10) ? "0" + gettime(2) : "" + gettime(2) ); if((gettime(3)+1) == 24) set mine_hour$, "00"; else if((gettime(3)+1) < 10) set mine_hour$, "0" + (gettime(3)+1); else set mine_hour$, "" + (gettime(3) + 1); if( mine_hour$ == "00") set mine_day$, "" + (gettime(5) + 1); else set mine_day$, "" + gettime(5); if( atoi(mine_day$) > .@daymonth[gettime(6)-1]) set mine_day$, "1"; if( mine_day$ == "1" ) set mine_month$, "" + (gettime(6) + 1); else set mine_month$, "" + gettime(6); if( mine_month$ == "13" ) { set mine_month$, "1"; set mine_year$, "" + (gettime(7) + 1); } else set mine_year$, "" + gettime(7); return; } ordeal_1-1 mapflag loadevent ordeal_1-1 mapflag noskill ordeal_1-1 mapflag nowarp ordeal_1-1 mapflag nowarpto ordeal_1-1 mapflag noteleport ordeal_1-1 mapflag nosave SavePoint ordeal_1-1 mapflag noteleport ordeal_1-1 mapflag novending ordeal_1-1 mapflag noreturn ordeal_1-1 mapflag nomemo ordeal_1-1 mapflag nobranch
  17. i already edit that emistry // Database for upgrading items. // Stats per level for safe upgrade, Stats per level after safe limit, Safe level limit, Lv.1 %, Lv 2 %, Lv.3%, ect... // Armor defense is done in percentage (ie 70 = .7 def) // Weapons are whole numbers (ie 3 = 3 atk) 100,100,4, 100,100,100,100,100,100,100, 20, 20, 10, 50, 30, 30, 20, 20, 10, 10, 10, 10, 10, // Armor 2, 2, 7, 100,100,100,100,100,100,100, 60, 40, 20, 70, 70, 50, 50, 30, 30, 20, 20, 10, 10, // Lv.1 Weapons 3, 3, 6, 100,100,100,100,100,100,100, 40, 20, 20, 70, 50, 50, 30, 30, 20, 20, 10, 10, 10, // Lv.2 Weapons 5, 5, 5, 100,100,100,100,100,100,100, 20, 20, 20, 50, 50, 30, 30, 20, 20, 10, 10, 10, 10, // Lv.3 Weapons 7, 7, 4, 100,100,100,100,100,100,100, 20, 20, 10, 50, 30, 30, 20, 20, 10, 10, 10, 10, 10, // Lv.4 Weapons is that right?
  18. can anyone change this script to +7 save limit? i already change the meesage that it's require 7 elunium, but when it's start refining it's just until +4 i want to change save limit into +7 thx before function script refinemain { set .@features,getarg(1); mes "[" + getarg(0) + "]"; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) { if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$ + ":"; } set .@part,select(.@menu$); if(!getequipisequiped(.@part)) { mes "[" + getarg(0) + "]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion 6; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "[" + getarg(0) + "]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check if the item is identified... (Don't know why this is in here... but kept it anyway) if(!getequipisidentify(.@part)) { mes "[" + getarg(0) + "]"; mes "You can't refine this"; mes "if you haven't appraised"; mes "it first. Make sure your"; mes "stuff is identified before"; mes "I can refine it."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)){ case 0: //Refine Armor set .@price,2000; set .@material,985; set .@safe,7; break; case 1: //Refine Level 1 Weapon set .@price,50; set .@material,1010; set .@safe,7; break; case 2: //Refine Level 2 Weapon set .@price,200; set .@material,1011; set .@safe,7; break; case 3: //Refine Level 3 Weapon set .@price,5000; set .@material,984; set .@safe,7; break; case 4: //Refine Level 4 Weapon set .@price,20000; set .@material,984; set .@safe,7; break; case 5: //Refine other stuff? set .@price,2000; set .@material,985; set .@safe,7; break; } if(.@features != 1) { mes "[" + getarg(0) + "]"; mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery(.@part) < 100) { mes "[" + getarg(0) + "]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch(.@material) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+getarg(0)+"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "[" + getarg(0) + "]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } set Zeny,Zeny-.@price; delitem .@material,1; if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?) mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item mes "[" + getarg(0) + "]"; Emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; mes "[" + getarg(0) + "]"; set .@emo,rand(1,5); if (.@emo == 1) { Emotion e_cash; } else { Emotion e_swt; } set .@lose,rand(1,3); if (.@lose == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem .@part; Emotion e_heh; set .@win,rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } // New Refining Functions ======================== if(getequiprefinerycnt(.@part) < .@safe) { mes "[" + getarg(0) + "]"; mes "I can refine this to the safe limit or a desired number of times... it's your choice..."; next; set .@menu2,select("To the safe limit please.","I'll decide how many times.","I've changed my mind..."); } else set .@menu2,2; switch(.@menu2){ case 1: set .@refinecnt,.@safe - getequiprefinerycnt(.@part); break; case 2: next; mes "[" + getarg(0) + "]"; mes "So how many times would you like me to refine your item?"; next; input .@refinecnt; set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part); if (.@refinecnt < 1 || .@refinecheck > 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this item that many times."; close; } if(.@refinecheck > .@safe) { set .@refinecheck,.@refinecheck - .@safe; mes "[" + getarg(0) + "]"; mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?"; next; if(select("Yes...","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } } break; case 3: next; mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } set .@fullprice,.@price * .@refinecnt; mes "[" + getarg(0) + "]"; mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?"; next; if(select("Yes","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) { mes "[" + getarg(0) + "]"; mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes."; close; } set Zeny,Zeny - .@fullprice; delitem .@material,.@refinecnt; while(.@refinecnt){ if (getequipisequiped(.@part) == 0) { mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if (getequipid(.@part) != .@refineitemid || (.@menu2 == 1 && getequippercentrefinery(.@part) < 90)) { mes "[" + getarg(0) + "]"; mes "Clan... No, but Did you imagine I could be so stupid !?!"; mes "You have changed it..."; mes "Go out before I stun you with my Hammer!!!"; close; } mes "Clang, clang!!!"; if(.@menu2 == 2 && getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; emotion 23; mes "[" + getarg(0) + "]"; mes "WAHHHH!!! I'm so sorry... I warned you this could happen..."; set .@refinecnt,.@refinecnt - 1; if(.@refinecnt == 0) close; mes "Here's the unused Zeny and Material back..."; getitem .@material,.@refinecnt; set .@fullprice,.@refinecnt * .@price; set Zeny,Zeny + .@fullprice; close; } successrefitem .@part; emotion 21; set .@refinecnt,.@refinecnt - 1; next; } mes "[" + getarg(0) + "]"; mes "All finished... Come again soon."; close; }
  19. sorry but i can't understand... can u explain more? it's still get command not found when u type "make clean or make sql"
  20. hey there i get this error when try to compile my server in putty i type ./configure n it's seem ok but when i type "make sql" it's become error "command not found" so i can't compile my server...how to fix it?
  21. i think it's can be done if pallete change to item
  22. how to solve it? can u share it?
  23. does anyone have cash refiner? so it will detect when weapon or armor +6 then use this npc to make +7 but with cash
×
×
  • Create New...