Jump to content

malufett

Members
  • Posts

    554
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by malufett

  1. tmp_item.card[1]=((sc*5)<<8)+ele; this value holds the star crumb flag and the element..and it was bit shifted to hold multiply value.. btw this is the part where it was disassemble if(sd->status.inventory[index].card[0]==CARD0_FORGE) { // Forged weapon wd->star += (sd->status.inventory[index].card[1]>>8); if(wd->star >= 15) wd->star = 40; // 3 Star Crumbs now give +40 dmg if(pc_famerank(MakeDWord(sd->status.inventory[index].card[2],sd->status.inventory[index].card[3]) ,MAPID_BLACKSMITH)) wd->star += 10; if (!wa->ele) //Do not overwrite element from previous bonuses. wa->ele = (sd->status.inventory[index].card[1]&0x0f); }
  2. this one checks what stone is used so it can determined its element.. @skill.c for(i=0,sc=0,ele=0;i<3;i++){ //Note that qty should always be one if you are using these! int j; if( slot[i]<=0 ) continue; j = pc_search_inventory(sd,slot[i]); if(j < 0) continue; if(slot[i]==1000){ /* Star Crumb */ pc_delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); sc++; } if(slot[i]>=994 && slot[i]<=997 && ele==0){ /* Flame Heart . . . Great Nature */ static const int ele_table[4]={3,1,4,2}; pc_delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); ele=ele_table[slot[i]-994]; } } so the output are the ele(element of the forged item) & sc(damage bonus from star crumb) variable..
  3. @skill_cast_db.txt example change to
  4. once you receive the patch list it means your patcher is ok..however it seems that the patch server is out of reach even though you have a fast connection..or try to use proxy.. can you test to ping it or access ro.game.gnjoy.com
  5. oh nice..its now working properly..now the only problem is your internet connectivity..its seems that it is slow or it is too far from gravity's patch server..
  6. malufett

    @cart

    hahaha..I know what it feels like....
  7. you need a newer patch.inf files.. I want to give mine however mine is already updated to current so can't help sorry... anyway give this a try extract then paste this to your 'PatchClient/Lua Files' Download: http://www.4shared.com/archive/CdSMavf1/ServerInfoz.html?refurl=d1url
  8. malufett

    @cart

    +1 unless @option is enhance to support the new carts implementation...
  9. something like that.. but he mean is something like inside job manipulator, item giver to non GM, and other corrupt things or added feature which hackers can benefit...
  10. //----------------------------------- // Function to create a new character //----------------------------------- #if PACKETVER >= 20120307 int make_new_char_sql(struct char_session_data* sd, char* name_, int slot, int hair_color, int hair_style) { int str = 1, agi = 1, vit = 1, int_ = 1, dex = 1, luk = 1; #else int make_new_char_sql(struct char_session_data* sd, char* name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style) { #endif char name[NAME_LENGTH]; char esc_name[NAME_LENGTH*2+1]; int char_id, flag; safestrncpy(name, name_, NAME_LENGTH); normalize_name(name,TRIM_CHARS); Sql_EscapeStringLen(sql_handle, esc_name, name, strnlen(name, NAME_LENGTH)); flag = check_char_name(name,esc_name); if( flag < 0 ) return flag; //check other inputs #if PACKETVER >= 20120307 if(slot >= MAX_CHARS) #else if((slot >= MAX_CHARS) // slots || (str + agi + vit + int_ + dex + luk != 6*5 ) // stats || (str < 1 || str > 9 || agi < 1 || agi > 9 || vit < 1 || vit > 9 || int_ < 1 || int_ > 9 || dex < 1 || dex > 9 || luk < 1 || luk > 9) // individual stat values || (str + int_ != 10 || agi + luk != 10 || vit + dex != 10) ) // pairs #endif return -2; // invalid input // check the number of already existing chars in this account if( char_per_account != 0 ) { if( SQL_ERROR == Sql_Query(sql_handle, "SELECT 1 FROM `%s` WHERE `account_id` = '%d'", char_db, sd->account_id) ) Sql_ShowDebug(sql_handle); if( Sql_NumRows(sql_handle) >= char_per_account ) return -2; // character account limit exceeded } // check char slot if( SQL_ERROR == Sql_Query(sql_handle, "SELECT 1 FROM `%s` WHERE `account_id` = '%d' AND `char_num` = '%d' LIMIT 1", char_db, sd->account_id, slot) ) Sql_ShowDebug(sql_handle); if( Sql_NumRows(sql_handle) > 0 ) return -2; // slot already in use // validation success, log result if (log_char) { if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`time`, `char_msg`,`account_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)" "VALUES (NOW(), '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", charlog_db, "make new char", sd->account_id, slot, esc_name, str, agi, vit, int_, dex, luk, hair_style, hair_color) ) Sql_ShowDebug(sql_handle); } #if PACKETVER >= 20120307 //Insert the new char entry to the database if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `zeny`, `status_point`,`str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`," "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES (" "'%d', '%d', '%s', '%d', '%d','%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')", char_db, sd->account_id , slot, esc_name, start_zeny, 48, str, agi, vit, int_, dex, luk, (40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color, mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) ) { Sql_ShowDebug(sql_handle); return -2; //No, stop the procedure! } #else //Insert the new char entry to the database if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`," "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES (" "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')", char_db, sd->account_id , slot, esc_name, start_zeny, str, agi, vit, int_, dex, luk, (40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color, mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) ) { Sql_ShowDebug(sql_handle); return -2; //No, stop the procedure! } #endif //Retrieve the newly auto-generated char id char_id = (int)Sql_LastInsertId(sql_handle); //Give the char the default items if (start_weapon > 0) { //add Start Weapon (Knife?) if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`char_id`,`nameid`, `amount`, `identify`) VALUES ('%d', '%d', '%d', '%d')", inventory_db, char_id, start_weapon, 1, 1) ) Sql_ShowDebug(sql_handle); } if (start_armor > 0) { //Add default armor (cotton shirt?) if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`char_id`,`nameid`, `amount`, `identify`) VALUES ('%d', '%d', '%d', '%d')", inventory_db, char_id, start_armor, 1, 1) ) Sql_ShowDebug(sql_handle); } ShowInfo("Created char: account: %d, char: %d, slot: %d, name: %s\n", sd->account_id, char_id, slot, name); return char_id; }
  11. cooldown in Pre-RE?? sounds weird since there only few skills in pre-RE have their cooldown.. did you check your files or configurations?
  12. malufett

    Suggestion

    but the suggested script command is still not suitable with this kind of situation... for example: I need to count 5 apples and 10 oranges.. so I will use countitem( apples, oranges ) but what if I have 14 oranges and 1 apple?? see kinda useless... but in reality countitem(apples) >= 5 && countitem(oranges) >= 15 however if we will do counteitem(apples,5,oranges,15) but same it not worth it in purpose.. maybe you could suggest like checkitem(apples, oranges) that it will return the overall number of items regardless the individual quantity..just like saying I need apples and oranges that when add it will give me a result of 15..
  13. malufett

    Suggestion

    +1 unless official servers created npc/quest where it requires counting items regardless of type to suffice required amount of items.....
  14. I will go for Euphy's suggestion..the only problem is how you will implement it... here is a pseudo
  15. aw...what did I eat yesterday...I think I need to rephrase it.. but amazingly Rytech understood me...since this idea is based on his previous implementation IT_THROWWEAPON I support your suggestion
  16. Hello, this is just my speculations/observation in aegis and official server... Characteristics: 1. not equitable 2. an etc type indeed its type #17 Usage/Function of type#17: 1. used to differentiate other etc type items 2. for easy indexing when searching this item as ammunition in some other skills.. so what do you think/opinion?
  17. yup you can delete it or comment it out..the warning was cause by a variable that hasn't been used..
  18. by using search: http://rathena.org/board/topic/69086-custom-skills-effect/page__hl__%2Bskill+%2Beffect
  19. Renewal Casting @ (r16661) I hope the database be soon furnished..
  20. @battle.c if( ( sc->data[sC_PNEUMA] && (flag&(BF_MAGIC|BF_LONG)) == BF_LONG ) || sc->data[sC__MANHOLE] && skill_num != RK_IGNITIONBREAK) { d->dmg_lv = ATK_BLOCK; return 0; }
  21. try this @clif.c case BL_PC: { struct map_session_data *ssd = (struct map_session_data *)bl; struct party_data *p = NULL; struct guild *g = NULL; +char name[NAME_LENGTH]; //Requesting your own "shadow" name. [skotlex] if (ssd->fd == fd && ssd->disguise) WBUFL(buf,2) = -bl->id; if( ssd->fakename[0] ) { WBUFW(buf, 0) = cmd = 0x195; memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH); WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0; break; } +sprintf(name, "[%d/%d] %s", ssd->status.base_level, pc_maxbaselv(ssd),ssd->status.name); +memcpy(WBUFP(buf,6), name, NAME_LENGTH); -memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH); NOTE:I didn't test it yet
  22. if you want a balanced mechanics then switch to renewal..but if your using it in a high rate then renewal mechanics will be useless then..IMO well there will be cons and pros..but what is good in renewal is the new features and interfaces....
  23. guide for a such is like a retarded thing... no one is like a machine except if he is really dedicated and start working in creating in detailed guide for a big thing like athena core structure.. I suggest or even other languages as long as you learn the basics and start reading rAthena core structure..start from atcommand.c to unit.c
×
×
  • Create New...