Перейти к содержанию

nejiko

Проверенные
  • Постов

    367
  • Зарегистрирован

  • Посещение

  • Победитель дней

    19

Сообщения, опубликованные nejiko

  1. Здравствуйте! Помогите,я в SRC части вовсе не понимаю,решил поставить модификацию,появились Error-ы!

    1)

    4> clif.c

    4>..\src\map\clif.c(15544): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор

    4>..\src\map\clif.c(15544): error C2198: clif_skill_fail: слишком мало аргументов для вызова

    Вот этот кусок!

     } else {
    clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);
    return 0;
    }

    2)

    4> skill.c

    4>..\src\map\skill.c(10091): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор

    4>..\src\map\skill.c(10091): error C2198: clif_skill_fail: слишком мало аргументов для вызова

    4>..\src\map\skill.c(10104): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор

    4>..\src\map\skill.c(10104): error C2198: clif_skill_fail: слишком мало аргументов для вызова

    4> status.c

     nullpo_ret(sd);

    if(nameid <= 0) {
    clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);
    return 0;
    }

    3)

    4> vending.c

    4>..\src\map\vending.c(224): error C2065: LOG_TYPE_VENDING: необъявленный идентификатор

    4>..\src\map\vending.c(224): warning C4047: функция: "char *" отличается по уровням косвенного обращения от "int"

    4>..\src\map\vending.c(224): warning C4024: log_zeny: различные типы для формального и фактического параметров 2

    4>..\src\map\vending.c(241): error C2065: LOG_TYPE_VENDING: необъявленный идентификатор

    4>..\src\map\vending.c(241): warning C4047: функция: "char *" отличается по уровням косвенного обращения от "int"

    4>..\src\map\vending.c(241): warning C4024: log_zeny: различные типы для формального и фактического параметров 2

    6> int_party.c

     //Logs (V)ending Zeny [Lupus]
    log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);
    pc_payzeny(sd, (int)z);

    В итоге!

    ========== Перестроение всех: успешно: 3, с ошибками: 1, пропущено: 5 ==========

    Афина: 3ceam

    Что еще нужно говорите!

    Вот моя папка SRC

    Вот модификация!

    Index: conf/battle/feature.conf

    ===================================================================

    --- conf/battle/feature.conf (revision 15154)

    +++ conf/battle/feature.conf (working copy)

    @@ -26,3 +26,12 @@

    // Search stores (Note 1)

    // Requires: 2010-08-03aRagexeRE or later

    feature.search_stores: on

    +

    +// Enable or disable extended vending system? (Note 1)

    +extended_vending: yes

    +// Show currency's name in vending board? (Note 1)

    +show_item_vending: yes

    +// Show more info about buying? (Note 1)

    +ex_vending_info: yes

    +// Item ID for Zeny. Set to 0 if you don't want use Zeny.

    +item_zeny: 30000

    \ No newline at end of file

    Index: conf/msg_athena.conf

    ===================================================================

    --- conf/msg_athena.conf (revision 15154)

    +++ conf/msg_athena.conf (working copy)

    @@ -535,5 +535,16 @@

    //...

    650: Unknown Job

    +// Extended Vending system

    +700: You do not have enough CashPoint

    +701: You do not have enough items

    +702: Seller has not enough space in your inventory

    +703: Seller can not take all the item

    +704: You have selected: %s

    +705: You've opened %s's shop. Sale is carried out: %s

    +706: Current Currency: %s

    +707: %s has bought '%s' in the amount of %d. Revenue: %d %s

    +708: Full revenue from %s is %d %s

    +

    //Custom translations

    import: conf/import/msg_conf.txt

    Index: db/item_db2.txt

    ===================================================================

    --- db/item_db2.txt (revision 15154)

    +++ db/item_db2.txt (working copy)

    @@ -61,3 +61,6 @@

    //==================================================================

    //2338,Wedding_Dress,Wedding Dress,5,43000,,500,,0,,0,0xFFFFFFFE,7,0,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }

    //7170,Tuxedo,Tuxedo,5,43000,,10,,0,,0,0xFFFFFFFE,7,1,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }

    +

    +// Vending system

    +30000,Zeny,Zeny,3,,10,10,,,,,,,,,,,,,{},{},{}

    \ No newline at end of file

    Index: db/item_vending.txt

    ===================================================================

    --- db/item_vending.txt (revision 0)

    +++ db/item_vending.txt (working copy)

    @@ -0,0 +1,11 @@

    +// Specific items for Vending System

    +// Format: ItemID

    +

    +// TCG Card

    +7227

    +// Mithril Coin

    +// 674

    +// Silver Coin

    +// 675

    +// Bronze Coin

    +// 673

    \ No newline at end of file

    Index: db/skill_db.txt

    ===================================================================

    --- db/skill_db.txt (revision 15154)

    +++ db/skill_db.txt (working copy)

    @@ -83,7 +83,7 @@

    38,0,0,0,0,0,0,10,0,no,0,0,0,none,0, MC_OVERCHARGE,Overcharge

    39,1,0,0,0,0,0,10,0,no,0,0,0,none,0, MC_PUSHCART,Pushcart

    40,1,6,4,0,0x1,0,1,1,no,0,0,0,none,0, MC_IDENTIFY,Item Appraisal

    -41,1,6,4,0,0x1,0,10,1,no,0,0,0,none,0, MC_VENDING,Vending

    +41,1,6,4,0,0x1,0,11,1,no,0,0,0,none,0, MC_VENDING,Vending

    42,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0, MC_MAMMONITE,Mammonite

    43,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AC_OWL,Owl's Eye

    44,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AC_VULTURE,Vulture's Eye

    Index: db/skill_tree.txt

    ===================================================================

    --- db/skill_tree.txt (revision 15154)

    +++ db/skill_tree.txt (working copy)

    @@ -79,7 +79,7 @@

    5,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    5,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    5,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -5,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +5,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    5,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    5,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    5,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -210,7 +210,7 @@

    10,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    10,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    10,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -10,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +10,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    10,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    10,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    10,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -486,7 +486,7 @@

    18,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    18,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    18,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -18,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +18,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    18,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    18,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    18,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -658,7 +658,7 @@

    23,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    23,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    23,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -23,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +23,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    23,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    23,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye#

    23,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye#

    @@ -807,7 +807,7 @@

    4006,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4006,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4006,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4006,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4006,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4006,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4006,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4006,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -955,7 +955,7 @@

    4011,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4011,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4011,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4011,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4011,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4011,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4011,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4011,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -1276,7 +1276,7 @@

    4019,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4019,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4019,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4019,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4019,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4019,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4019,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4019,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -1507,7 +1507,7 @@

    4028,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4028,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4028,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4028,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4028,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4028,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4028,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4028,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -1642,7 +1642,7 @@

    4033,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4033,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4033,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4033,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4033,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4033,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4033,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4033,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -1926,7 +1926,7 @@

    4041,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4041,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4041,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4041,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4041,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4041,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4041,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#

    4041,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#

    @@ -2095,7 +2095,7 @@

    4045,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#

    4045,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#

    4045,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#

    -4045,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    +4045,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#

    4045,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#

    4045,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye#

    4045,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye#

    Index: src/map/battle.c

    ===================================================================

    --- src/map/battle.c (revision 15154)

    +++ src/map/battle.c (working copy)

    @@ -4023,6 +4023,11 @@

    { "bg_magic_attack_damage_rate", &battle_config.bg_magic_damage_rate, 60, 0, INT_MAX, },

    { "bg_misc_attack_damage_rate", &battle_config.bg_misc_damage_rate, 60, 0, INT_MAX, },

    { "bg_flee_penalty", &battle_config.bg_flee_penalty, 20, 0, INT_MAX, },

    +// Extended Vending system

    + { "extended_vending", &battle_config.extended_vending, 1, 0, 1, },

    + { "show_item_vending", &battle_config.show_item_vending, 1, 0, 1, },

    + { "ex_vending_info", &battle_config.ex_vending_info, 1, 0, 1, },

    + { "item_zeny", &battle_config.item_zeny, 0, 0, MAX_ITEMDB, },

    };

    Index: src/map/battle.h

    ===================================================================

    --- src/map/battle.h (revision 15154)

    +++ src/map/battle.h (working copy)

    @@ -497,6 +497,12 @@

    int bg_magic_damage_rate;

    int bg_misc_damage_rate;

    int bg_flee_penalty;

    +

    + // Extended Vending system

    + int extended_vending;

    + int show_item_vending;

    + int ex_vending_info;

    + int item_zeny;

    } battle_config;

    void do_init_battle(void);

    Index: src/map/clif.c

    ===================================================================

    --- src/map/clif.c (revision 15154)

    +++ src/map/clif.c (working copy)

    @@ -5280,7 +5280,24 @@

    clif_notify_playerchat(sd, buf);

    }

    +void clif_displaymessagecolor(struct map_session_data *sd, const char* msg, unsigned long color)

    +{

    + int fd;

    + unsigned short len = strlen(msg) + 1;

    + nullpo_retv(sd);

    +

    + color = (color & 0x0000FF) << 16 | (color & 0x00FF00) | (color & 0xFF0000) >> 16; // RGB to BGR

    + fd = sd->fd;

    + WFIFOHEAD(fd, len+12);

    + WFIFOW(fd,0) = 0x2C1;

    + WFIFOW(fd,2) = len+12;

    + WFIFOL(fd,4) = 0;

    + WFIFOL(fd,8) = color;

    + memcpy(WFIFOP(fd,12), msg, len);

    + WFIFOSET(fd, WFIFOW(fd,2));

    +}

    +

    /// Send broadcast message in yellow or blue without font formatting (ZC_BROADCAST).

    /// 009a .W .?B

    void clif_broadcast(struct block_list* bl, const char* mes, int len, int type, enum send_target target)

    @@ -11015,7 +11032,7 @@

    /// 01ae .W

    void clif_parse_SelectArrow(int fd,struct map_session_data *sd)

    {

    - if (sd->menuskill_id != AC_MAKINGARROW)

    + if (sd->menuskill_id != AC_MAKINGARROW && sd->menuskill_id != MC_VENDING)

    return;

    if (pc_istrading(sd)) {

    //Make it fail to avoid shop exploits where you sell something different than you see.

    @@ -11023,7 +11040,14 @@

    sd->menuskill_val = sd->menuskill_id = 0;

    return;

    }

    - skill_arrow_create(sd,RFIFOW(fd,2));

    + switch( sd->menuskill_id ) {

    + case AC_MAKINGARROW:

    + skill_arrow_create(sd,RFIFOW(fd,2));

    + break;

    + case MC_VENDING: // Extended Vending system

    + skill_vending(sd,RFIFOW(fd,2));

    + break;

    + }

    sd->menuskill_val = sd->menuskill_id = 0;

    }

    @@ -11701,11 +11725,18 @@

    /// 1 = open

    void clif_parse_OpenVending(int fd, struct map_session_data* sd)

    {

    + struct item_data *item = itemdb_exists(sd->vend_loot);

    short len = (short)RFIFOW(fd,2) - 85;

    const char* message = (char*)RFIFOP(fd,4);

    bool flag = (bool)RFIFOB(fd,84);

    const uint8* data = (uint8*)RFIFOP(fd,85);

    + char out_msg[1024];

    + if(battle_config.extended_vending && battle_config.show_item_vending && sd->vend_loot && item->nameid != ITEMID_ZENY){

    + memset(out_msg, '\0', sizeof(out_msg));

    + strcat(strcat(strcat(strcat(out_msg,"["),item->jname),"] "),message);

    + }

    +

    if( sd->sc.data[sC_NOCHAT] && sd->sc.data[sC_NOCHAT]->val1&MANNER_NOROOM )

    return;

    if( map[sd->bl.m].flag.novending ) {

    @@ -11719,7 +11750,10 @@

    if( message[0] == '\0' ) // invalid input

    return;

    - vending_openvending(sd, message, flag, data, len/8);

    + if(battle_config.extended_vending && battle_config.show_item_vending && sd->vend_loot && item->nameid != ITEMID_ZENY)

    + vending_openvending(sd, out_msg, flag, data, len/8);

    + else

    + vending_openvending(sd, message, flag, data, len/8);

    }

    @@ -15778,7 +15812,43 @@

    ShowDump(RFIFOP(fd,0), packet_len);

    }

    +// Extended Vending system

    +int clif_vend(struct map_session_data *sd, int skill_lv)

    +{

    + struct item_data *item;

    + int c, i, d = 0;

    + int fd;

    + nullpo_ret(sd);

    +

    + fd = sd->fd;

    +

    + WFIFOHEAD(fd, 8 * 8 + 8);

    + WFIFOW(fd,0) = 0x1ad;

    + if(battle_config.item_zeny){

    + WFIFOW(fd, d * 2 + 4) = ITEMID_ZENY;

    + d++;

    + }

    + for( c = d, i = 0; i < ARRAYLENGTH(item_vend); i ++ ) {

    +

    + if((item = itemdb_exists(item_vend.itemid)) != NULL && item->nameid != ITEMID_ZENY){

    + WFIFOW(fd, c * 2 + 4) = item->nameid;

    + c++;

    + }

    + }

    + if( c > 0 ) {

    + sd->menuskill_id = MC_VENDING;

    + sd->menuskill_val = skill_lv;

    + WFIFOW(fd,2) = c * 2 + 4;

    + WFIFOSET(fd, WFIFOW(fd, 2));

    + } else {

    + clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);

    + return 0;

    + }

    +

    + return 1;

    +}

    +

    /// Main client packet processing function

    static int clif_parse(int fd)

    {

    Index: src/map/clif.h

    ===================================================================

    --- src/map/clif.h (revision 15154)

    +++ src/map/clif.h (working copy)

    @@ -561,6 +561,7 @@

    void clif_notify_chat(struct block_list* bl, const char* message, send_target target);

    void clif_notify_playerchat(struct map_session_data* sd, const char* message);

    void clif_displaymessage(const int fd, const char* mes);

    +void clif_displaymessagecolor(struct map_session_data *sd, const char* msg, unsigned long color);

    void clif_displayformatted(struct map_session_data* sd, const char* fmt, ...);

    void clif_disp_onlyself(struct map_session_data *sd, const char *mes, int len);

    void clif_disp_message(struct block_list* src, const char* mes, int len, enum send_target target);

    @@ -719,4 +720,8 @@

    void clif_open_search_store_info(struct map_session_data* sd);

    void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y);

    +// Extended Vending system

    +int clif_vend(struct map_session_data *sd, int skill_lv);

    +#define VEND_COLOR 0x00FFFF // Cyan

    +

    #endif /* _CLIF_H_ */

    Index: src/map/itemdb.c

    ===================================================================

    --- src/map/itemdb.c (revision 15154)

    +++ src/map/itemdb.c (working copy)

    @@ -689,7 +689,29 @@

    return true;

    }

    +// Extended Vending system

    +static bool itemdb_read_vending(char* fields[], int columns, int current)

    +{

    + struct item_data* id;

    + int nameid;

    + nameid = atoi(fields[0]);

    + if( ( id = itemdb_exists(nameid) ) == NULL )

    + {

    + ShowWarning("itemdb_read_vending: Invalid item id %d.\n", nameid);

    + return false;

    + }

    +

    + if( id->type == IT_ARMOR || id->type == IT_WEAPON )

    + {

    + ShowWarning("itemdb_read_vending: item id %d cannot be equipment or weapon.\n", nameid);

    + return false;

    + }

    +

    + item_vend[current].itemid = nameid;

    + return true;

    +}

    +

    /*======================================

    * Applies gender restrictions according to settings. [skotlex]

    *======================================*/

    @@ -1007,6 +1029,7 @@

    sv_readdb(db_path, "item_trade.txt", ',', 3, 3, -1, &itemdb_read_itemtrade);

    sv_readdb(db_path, "item_delay.txt", ',', 2, 2, MAX_ITEMDELAYS, &itemdb_read_itemdelay);

    sv_readdb(db_path, "item_buyingstore.txt", ',', 1, 1, -1, &itemdb_read_buyingstore);

    + sv_readdb(db_path, "item_vending.txt", ',', 1, 1, ARRAYLENGTH(item_vend), &itemdb_read_vending); // Extended Vending system

    }

    /*==========================================

    @@ -1059,6 +1082,7 @@

    itemdb_other->clear(itemdb_other, itemdb_final_sub);

    memset(itemdb_array, 0, sizeof(itemdb_array));

    + memset(item_vend,0,sizeof(item_vend)); // Extended Vending system

    // read new data

    itemdb_read();

    Index: src/map/itemdb.h

    ===================================================================

    --- src/map/itemdb.h (revision 15154)

    +++ src/map/itemdb.h (working copy)

    @@ -6,6 +6,9 @@

    #include "../common/mmo.h" // ITEM_NAME_LENGTH

    +// 32k array entries in array (the rest goes to the db)

    +#define MAX_ITEMDB 0x8000

    +

    #define MAX_RANDITEM 11000

    // The maximum number of item delays

    @@ -92,6 +95,12 @@

    int qty; //Counts amount of items in the group.

    };

    +struct s_item_vend {

    + int itemid;

    +};

    +

    +struct s_item_vend item_vend[MAX_INVENTORY];

    +

    struct item_data* itemdb_searchname(const char *name);

    int itemdb_searchname_array(struct item_data** data, int size, const char *str);

    struct item_data* itemdb_load(int nameid);

    @@ -149,4 +158,7 @@

    void do_final_itemdb(void);

    int do_init_itemdb(void);

    +// Extended Vending system

    +#define ITEMID_ZENY battle_config.item_zeny

    +

    #endif /* _ITEMDB_H_ */

    Index: src/map/pc.h

    ===================================================================

    --- src/map/pc.h (revision 15154)

    +++ src/map/pc.h (working copy)

    @@ -424,6 +424,10 @@

    // temporary debugging of bug #3504

    const char* delunit_prevfile;

    int delunit_prevline;

    +

    + // Extended Vending system

    + int vend_loot;

    + int vend_lvl;

    };

    //Update this max as necessary. 55 is the value needed for Super Baby currently

    Index: src/map/skill.c

    ===================================================================

    --- src/map/skill.c (revision 15154)

    +++ src/map/skill.c (working copy)

    @@ -10,6 +10,7 @@

    #include "../common/utils.h"

    #include "../common/ers.h"

    +#include "atcommand.h" // get_atcommand_level()

    #include "skill.h"

    #include "map.h"

    #include "path.h"

    @@ -4332,8 +4333,40 @@

    { //Prevent vending of GMs with unnecessary Level to trade/drop. [skotlex]

    if ( !pc_can_give_items(pc_isGM(sd)) )

    clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);

    - else

    - clif_openvendingreq(sd,2+skilllv);

    + else {

    + if(battle_config.extended_vending && skilllv > 10){

    + struct item_data *item;

    +

    + char output[1024];

    + int c = 0, i, d = 0;

    + sd->vend_lvl = skilllv;

    +

    + if(battle_config.item_zeny)

    + d++;

    +

    + for( c = d, i = 0; i < ARRAYLENGTH(item_vend); i ++ ) {

    + if((item = itemdb_exists(item_vend.itemid)) != NULL && item->nameid != ITEMID_ZENY)

    + c++;

    + }

    + if(c > 1)

    + clif_vend(sd,sd->vend_lvl);

    + else {

    + if© {

    + item = itemdb_exists(battle_config.item_zeny?battle_config.item_zeny:item_vend[0].itemid);

    + sd->vend_loot = item->nameid;

    + sprintf(output,msg_txt(706),itemdb_jname(sd->vend_loot));

    + clif_displaymessagecolor(sd,output,VEND_COLOR);

    + clif_openvendingreq(sd,1+sd->vend_lvl);

    + } else {

    + sd->vend_loot = 0;

    + clif_openvendingreq(sd,1+sd->vend_lvl);

    + }

    + }

    + } else {

    + sd->vend_loot = 0;

    + clif_openvendingreq(sd,2+skilllv);

    + }

    + }

    }

    break;

    @@ -10319,6 +10352,36 @@

    return 1;

    }

    +// Extended Vending system

    +int skill_vending(struct map_session_data *sd, int nameid)

    +{

    + struct item_data *item;

    + char output[1024];

    +

    + nullpo_ret(sd);

    +

    + if(nameid <= 0) {

    + clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);

    + return 0;

    + }

    +

    + if(nameid > MAX_ITEMDB)

    + return 0;

    +

    + sd->vend_loot = nameid;

    + item = itemdb_exists(nameid);

    + sprintf(output,msg_txt(704),item->jname);

    + clif_displaymessagecolor(sd,output,VEND_COLOR);

    +

    + if ( !pc_can_give_items(pc_isGM(sd)) )

    + clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);

    + else {

    + clif_openvendingreq(sd,2+sd->vend_lvl);

    + }

    +

    + return 0;

    +}

    +

    /*==========================================

    *

    *------------------------------------------*/

    Index: src/map/skill.h

    ===================================================================

    --- src/map/skill.h (revision 15154)

    +++ src/map/skill.h (working copy)

    @@ -1548,4 +1548,7 @@

    UNT_MAX = 0x190

    };

    +// Extended Vending system

    +int skill_vending( struct map_session_data *sd, int nameid);

    +

    #endif /* _SKILL_H_ */

    Index: src/map/vending.c

    ===================================================================

    --- src/map/vending.c (revision 15154)

    +++ src/map/vending.c (working copy)

    @@ -47,6 +47,7 @@

    void vending_vendinglistreq(struct map_session_data* sd, int id)

    {

    struct map_session_data* vsd;

    + char output[1024]; // Extended Vending system

    nullpo_retv(sd);

    if( (vsd = map_id2sd(id)) == NULL )

    @@ -60,6 +61,12 @@

    return;

    }

    + // Extended Vending system

    + if(battle_config.extended_vending && vsd->vend_loot){

    + sprintf(output,msg_txt(705),vsd->status.name, itemdb_jname(vsd->vend_loot));

    + clif_displaymessagecolor(sd,output,VEND_COLOR);

    + }

    +

    sd->vended_id = vsd->vender_id; // register vending uid

    clif_vendinglist(sd, id, vsd->vending);

    @@ -121,16 +128,57 @@

    vend_list = j;

    z += ((double)vsd->vending[j].value * (double)amount);

    - if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )

    - {

    - clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny

    - return;

    - }

    - if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )

    - {

    - clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow

    - return;

    + // Extended Vending system

    + if(battle_config.extended_vending){

    + if(vsd->vend_loot == ITEMID_ZENY || !vsd->vend_loot) {

    + if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )

    + {

    + //clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny

    + return;

    + }

    + if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )

    + {

    + clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow

    + return;

    + }

    + } else {

    + int k, loot_count = 0, vsd_w = 0;

    + for(k = 0; k < MAX_INVENTORY; k++)

    + if(sd->status.inventory[k].nameid == vsd->vend_loot)

    + loot_count += sd->status.inventory[k].amount;

    +

    + if( z > loot_count || z < 0)

    + {

    + clif_displaymessagecolor(sd,msg_txt(701),VEND_COLOR);

    + return;

    + }

    +

    + if(pc_inventoryblank(vsd) <= 0)

    + {

    + clif_displaymessagecolor(sd,msg_txt(702),VEND_COLOR);

    + return;

    + }

    +

    + vsd_w += itemdb_weight(vsd->vend_loot) * (int)z;

    +

    + if(vsd_w + vsd->weight > vsd->max_weight)

    + {

    + clif_displaymessagecolor(sd,msg_txt(703),VEND_COLOR);

    + return;

    + }

    + }

    + } else {

    + if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )

    + {

    + clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny

    + return;

    + }

    + if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )

    + {

    + clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow

    + return;

    + }

    }

    w += itemdb_weight(vsd->status.cart[idx].nameid) * amount;

    if( w + sd->weight > sd->max_weight )

    @@ -167,20 +215,49 @@

    }

    }

    - //Logs (V)ending Zeny [Lupus]

    - log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);

    + // Extended Vending system

    + if(battle_config.extended_vending){

    + if(vsd->vend_loot == ITEMID_ZENY || !vsd->vend_loot) {

    + //Logs (V)ending Zeny [Lupus]

    + log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);

    + pc_payzeny(sd, (int)z);

    + if( battle_config.vending_tax )

    + z -= z * (battle_config.vending_tax/10000.);

    + pc_getzeny(vsd, (int)z);

    + } else {

    + for( i = 0; i < MAX_INVENTORY; i++)

    + if(sd->status.inventory.nameid == vsd->vend_loot)

    + {

    + struct item *item;

    + item = &sd->status.inventory;

    + pc_additem(vsd,item,(int)z);

    + }

    + pc_delitem(sd,pc_search_inventory(sd, vsd->vend_loot),(int)z,0,6);

    + }

    + } else {

    + //Logs (V)ending Zeny [Lupus]

    + log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);

    + pc_payzeny(sd, (int)z);

    + if( battle_config.vending_tax )

    + z -= z * (battle_config.vending_tax/10000.);

    - pc_payzeny(sd, (int)z);

    - if( battle_config.vending_tax )

    - z -= z * (battle_config.vending_tax/10000.);

    - pc_getzeny(vsd, (int)z);

    + pc_getzeny(vsd, (int)z);

    + }

    for( i = 0; i < count; i++ )

    {

    short amount = *(uint16*)(data + 4*i + 0);

    short idx = *(uint16*)(data + 4*i + 2);

    + const char *item_name;

    +

    + double rev = 0.;

    idx -= 2;

    + if(battle_config.ex_vending_info){ // Extended Vending system

    + item_name = itemdb_jname(vsd->status.cart[idx].nameid);

    + rev = ((double)vsd->vending[vend_list].value * (double)amount);

    + }

    +

    //Logs sold (V)ending items [Lupus]

    log_pick(&vsd->bl, LOG_TYPE_VENDING, vsd->status.cart[idx].nameid, -amount, &vsd->status.cart[idx]);

    log_pick( &sd->bl, LOG_TYPE_VENDING, vsd->status.cart[idx].nameid, amount, &vsd->status.cart[idx]);

    @@ -195,11 +272,20 @@

    if( battle_config.buyer_name )

    {

    char temp[256];

    - sprintf(temp, msg_txt(265), sd->status.name);

    + if(battle_config.ex_vending_info) // Extended Vending system

    + sprintf(temp, msg_txt(707), sd->status.name, item_name, amount, (int)(rev -= rev * (battle_config.vending_tax/10000.)), vsd->vend_loot?itemdb_jname(vsd->vend_loot):"Zeny");

    + else

    + sprintf(temp, msg_txt(265), sd->status.name);

    clif_disp_onlyself(vsd,temp,strlen(temp));

    }

    }

    + if(battle_config.ex_vending_info){ // Extended Vending system

    + char temp[256];

    + sprintf(temp, msg_txt(708), sd->status.name, (int)z, vsd->vend_loot?itemdb_jname(vsd->vend_loot):"Zeny");

    + clif_disp_onlyself(vsd,temp,strlen(temp));

    + }

    +

    // compact the vending list

    for( i = 0, cursor = 0; i < vsd->vend_num; i++ )

    {

    Подскажите что делать?

  2. Как настроить эту беду?

    a4447143d57f9ba4e502d9838aad.png

    1) NewTab_3 заменить на русский и настроить что нужно отображать в чате!

    2) Что за MSG, где найти нормальный Lua чат?

    3) Не показывает в чате Дроп МВП карт?((

    Заранее спасибо!

    1) Два раза щелкни на NewTab_3 измени, как тебе охота.

    2-3) Над чатом есть кружочек, где куча настроек, вот там и изменяйте, что захотите.

    Там последних 5 настроек написаны так же MSG[201] и тд..

  3. люди есть у кого нибудь гайд на новые ехе при старом сделал 9 позиций урона но клиент зависает при использовании любого скила

    при статах 999 стр(сила) кросс бьёт пикой по порингу 137054236 и зависает с запросом на завершение процесса

    пойдет?

    тут

  4. небольшая поправка не в луа а в просто папке дата \data\chatwndinfo.lua этот фаил там должен быть в зависимости у exe версии


    CanDragWnd = 1
    ChatSubWnd_1 = {
    XPos = 0,
    YPos = 0,
    Width = 0,
    Height = 0,
    TabState = "On",
    TabName = "Публичный",
    option1 = 1,
    option2 = 1,
    option3 = 1,
    option4 = 1,
    option5 = 1,
    option6 = 1,
    option7 = 1,
    option8 = 1,
    option9 = 1,
    option10 = 1,
    option11 = 1,
    option12 = 1,
    option13 = 1,
    option14 = 1,
    option15 = 0,
    option16 = 0,
    option17 = 0,
    option18 = 0,
    option19 = 0,
    option20 = 0,
    }
    ChatSubWnd_2 = {
    XPos = 0,
    YPos = 0,
    Width = 0,
    Height = 0,
    TabState = "On",
    TabName = "Гильдия",
    option1 = 0,
    option2 = 0,
    option3 = 0,
    option4 = 0,
    option5 = 0,
    option6 = 0,
    option7 = 0,
    option8 = 0,
    option9 = 0,
    option10 = 0,
    option11 = 0,
    option12 = 0,
    option13 = 0,
    option14 = 0,
    option15 = 0,
    option16 = 0,
    option17 = 0,
    option18 = 0,
    option19 = 0,
    option20 = 0,
    }
    ChatSubWnd_3 = {
    XPos = 0,
    YPos = 0,
    Width = 0,
    Height = 0,
    TabState = "On",
    TabName = "Пати чат",
    option1 = 0,
    option2 = 0,
    option3 = 0,
    option4 = 0,
    option5 = 0,
    option6 = 0,
    option7 = 0,
    option8 = 0,
    option9 = 0,
    option10 = 0,
    option11 = 0,
    option12 = 0,
    option13 = 0,
    option14 = 0,
    option15 = 0,
    option16 = 0,
    option17 = 0,
    option18 = 0,
    option19 = 0,
    option20 = 0,
    }

    у меня лично так

    а может быть и в этом файлике \data\ChatWndInfo_U.lua


    CanDragWnd = 1
    ChatSubWnd_1 = {
    XPos = 0,
    YPos = 0,
    Width = 0,
    Height = 0,
    TabState = "On",
    TabName = [[Публичный]],
    option1 = 1,
    option2 = 1,
    option3 = 1,
    option4 = 1,
    option5 = 1,
    option6 = 1,
    option7 = 1,
    option8 = 1,
    option9 = 1,
    option10 = 1,
    option11 = 1,
    option12 = 1,
    option13 = 1,
    option14 = 1,
    option15 = 0,
    option16 = 0,
    option17 = 0,
    option18 = 0,
    option19 = 0,
    option20 = 0,
    option21 = 0,
    }
    ChatSubWnd_2 = {
    XPos = 0,
    YPos = 0,
    Width = 0,
    Height = 0,
    TabState = "On",
    TabName = [[NewTab_2]],
    option1 = 1,
    option2 = 1,
    option3 = 1,
    option4 = 1,
    option5 = 1,
    option6 = 1,
    option7 = 1,
    option8 = 1,
    option9 = 1,
    option10 = 1,
    option11 = 1,
    option12 = 1,
    option13 = 1,
    option14 = 1,
    option15 = 1,
    option16 = 1,
    option17 = 1,
    option18 = 1,
    option19 = 1,
    option20 = 1,
    option21 = 1,
    }

    screenNeWRO0001.jpg

    Огромное спасибо!

    • Upvote 1
  5. Вот

    А что в mmo.h?


    // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
    // For more information, see LICENCE in the main folder
    #ifndef _MMO_H_
    #define _MMO_H_
    #include "cbasetypes.h"
    #include <time.h>
    // server->client protocol version
    // 0 - pre-?
    // 1 - ? - 0x196
    // 2 - ? - 0x78, 0x79
    // 3 - ? - 0x1c8, 0x1c9, 0x1de
    // 4 - ? - 0x1d7, 0x1d8, 0x1d9, 0x1da
    // 5 - 2003-12-18aSakexe+ - 0x1ee, 0x1ef, 0x1f0, ?0x1c4, 0x1c5?
    // 6 - 2004-03-02aSakexe+ - 0x1f4, 0x1f5
    // 7 - 2005-04-11aSakexe+ - 0x229, 0x22a, 0x22b, 0x22c
    // 20061023 - 2006-10-23aSakexe+ - 0x6b, 0x6d
    // 20070521 - 2007-05-21aSakexe+ - 0x283
    // 20070821 - 2007-08-21aSakexe+ - 0x2c5
    // 20070918 - 2007-09-18aSakexe+ - 0x2d7, 0x2d9, 0x2da
    // 20071106 - 2007-11-06aSakexe+ - 0x78, 0x7c, 0x22c
    // 20080102 - 2008-01-02aSakexe+ - 0x2ec, 0x2ed , 0x2ee
    // 20081126 - 2008-11-26aSakexe+ - 0x1a2
    // 20090408 - 2009-04-08aSakexe+ - 0x44a (dont use as it overlaps with RE client packets)
    // 20080827 - 2008-08-27aRagexeRE+ - First RE Client
    // 20081217 - 2008-12-17aRagexeRE+ - 0x6d (Note: This one still use old Char Info Packet Structure)
    // 20081218 - 2008-12-17bRagexeRE+ - 0x6d (Note: From this one client use new Char Info Packet Structure)
    // 20090603 - 2009-06-03aRagexeRE+ - 0x7d7, 0x7d8, 0x7d9, 0x7da
    // 20090617 - 2009-06-17aRagexeRE+ - 0x7d9
    // 20090922 - 2009-09-22aRagexeRE+ - 0x7e5, 0x7e7, 0x7e8, 0x7e9
    // 20091103 - 2009-11-03aRagexeRE+ - 0x7f7, 0x7f8, 0x7f9
    // 20100105 - 2010-01-05aRagexeRE+ - 0x133, 0x800, 0x801
    // 20100126 - 2010-01-26aRagexeRE+ - 0x80e
    // 20100223 - 2010-02-23aRagexeRE+ - 0x80f
    // 20100413 - 2010-04-13aRagexeRE+ - 0x6b
    // 20100629 - 2010-06-29aRagexeRE+ - 0x2d0, 0xaa, 0x2d1, 0x2d2
    // 20100721 - 2010-07-21aRagexeRE+ - 0x6b, 0x6d
    // 20100727 - 2010-07-27aRagexeRE+ - 0x6b, 0x6d
    // 20100803 - 2010-08-03aRagexeRE+ - 0x6b, 0x6d, 0x827, 0x828, 0x829, 0x82a, 0x82b, 0x82c, 0x842, 0x843
    // 20101124 - 2010-11-24aRagexeRE+ - 0x856, 0x857, 0x858
    // 20110111 - 2011-01-11aRagexeRE+ - 0x6b, 0x6d
    // 20110928 - 2011-09-28aRagexeRE+ - 0x6b, 0x6d
    // 20111025 - 2011-10-25aRagexeRE+ - 0x6b, 0x6d
    #ifndef PACKETVER
    #define PACKETVER 20081217
    #endif
    // backward compatible PACKETVER 8 and 9
    #if PACKETVER == 8
    #undef PACKETVER
    #define PACKETVER 20070521
    #endif
    #if PACKETVER == 9
    #undef PACKETVER
    #define PACKETVER 20071106
    #endif
    //Remove/Comment this line to disable sc_data saving. [Skotlex]
    #define ENABLE_SC_SAVING
    //Remove/Comment this line to disable server-side hot-key saving support [Skotlex]
    //Note that newer clients no longer save hotkeys in the registry!
    #define HOTKEY_SAVING
    //The number is the max number of hotkeys to save
    #if PACKETVER < 20090603
    // (27 = 9 skills x 3 bars) (0x02b9,191)
    #define MAX_HOTKEYS 27
    #elif PACKETVER < 20090617
    // (36 = 9 skills x 4 bars) (0x07d9,254)
    #define MAX_HOTKEYS 36
    #else
    // (38 = 9 skills x 4 bars & 2 Quickslots)(0x07d9,268)
    #define MAX_HOTKEYS 38
    #endif
    #define MAX_MAP_PER_SERVER 1500 // Increased to allow creation of Instance Maps
    #define MAX_INVENTORY 100
    //Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well.
    #define MAX_CHARS 9
    //Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
    //Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
    #define MAX_SLOTS 4
    //Max amount of a single stacked item
    #define MAX_AMOUNT 30000
    #define MAX_ZENY 1000000000
    #define MAX_FAME 1000000000
    #define MAX_CART 100
    #define MAX_SKILL 2536
    #define GLOBAL_REG_NUM 256
    #define ACCOUNT_REG_NUM 64
    #define ACCOUNT_REG2_NUM 16
    //Should hold the max of GLOBAL/ACCOUNT/ACCOUNT2 (needed for some arrays that hold all three)
    #define MAX_REG_NUM 256
    #define DEFAULT_WALK_SPEED 150
    #define MIN_WALK_SPEED 0
    #define MAX_WALK_SPEED 1000
    #define MAX_STORAGE 600
    #define MAX_GUILD_STORAGE 600
    #define MAX_PARTY 12
    #define MAX_GUILD 16+10*6 // increased max guild members +6 per 1 extension levels [Lupus]
    #define MAX_GUILDPOSITION 20 // increased max guild positions to accomodate for all members [Valaris] (removed) [PoW]
    #define MAX_GUILDEXPULSION 32
    #define MAX_GUILDALLIANCE 16
    #define MAX_GUILDSKILL 15 // increased max guild skills because of new skills [Sara-chan]
    #define MAX_GUILDCASTLE 34 // Updated to include new entries for WoE:SE. [L0ne_W0lf]
    #define MAX_GUILDLEVEL 50
    #define MAX_GUARDIANS 8 //Local max per castle. [Skotlex]
    #define MAX_QUEST_DB 2000 //Max quests that the server will load
    #define MAX_QUEST_OBJECTIVES 3 //Max quest objectives for a quest
    // for produce
    #define MIN_ATTRIBUTE 0
    #define MAX_ATTRIBUTE 4
    #define ATTRIBUTE_NORMAL 0
    #define MIN_STAR 0
    #define MAX_STAR 3
    #define MAX_STATUS_TYPE 5
    #define WEDDING_RING_M 2634
    #define WEDDING_RING_F 2635
    //For character names, title names, guilds, maps, etc.
    //Includes null-terminator as it is the length of the array.
    #define NAME_LENGTH (23 + 1)
    //For item names, which tend to have much longer names.
    #define ITEM_NAME_LENGTH 50
    //For Map Names, which the client considers to be 16 in length including the .gat extension
    #define MAP_NAME_LENGTH (11 + 1)
    #define MAP_NAME_LENGTH_EXT (MAP_NAME_LENGTH + 4)
    #define MAX_FRIENDS 40
    #define MAX_MEMOPOINTS 3
    //Size of the fame list arrays.
    #define MAX_FAME_LIST 10
    //Limits to avoid ID collision with other game objects
    #define START_ACCOUNT_NUM 2000000
    #define END_ACCOUNT_NUM 100000000
    #define START_CHAR_NUM 150000
    //Guilds
    #define MAX_GUILDMES1 60
    #define MAX_GUILDMES2 120
    //Base Homun skill.
    #define HM_SKILLBASE 8001
    #define MAX_HOMUNSKILL 16
    #define MAX_HOMUNCULUS_CLASS 16 //[orn]
    #define HM_CLASS_BASE 6001
    #define HM_CLASS_MAX (HM_CLASS_BASE+MAX_HOMUNCULUS_CLASS-1)
    //Mail System
    #define MAIL_MAX_INBOX 30
    #define MAIL_TITLE_LENGTH 40
    #define MAIL_BODY_LENGTH 200
    //Mercenary System
    #define MC_SKILLBASE 8201
    #define MAX_MERCSKILL 40
    #define MAX_MERCENARY_CLASS 44
    enum item_types {
    IT_HEALING = 0,
    IT_UNKNOWN, //1
    IT_USABLE, //2
    IT_ETC, //3
    IT_WEAPON, //4
    IT_ARMOR, //5
    IT_CARD, //6
    IT_PETEGG, //7
    IT_PETARMOR,//8
    IT_UNKNOWN2,//9
    IT_AMMO, //10
    IT_DELAYCONSUME,//11
    IT_CASH = 18,
    IT_MAX
    };

    //Questlog system [Kevin] [Inkfish]
    typedef enum quest_state { Q_INACTIVE, Q_ACTIVE, Q_COMPLETE } quest_state;
    struct quest {
    int quest_id;
    unsigned int time;
    int count[MAX_QUEST_OBJECTIVES];
    quest_state state;
    };
    struct item {
    int id;
    short nameid;
    short amount;
    unsigned short equip; // location(s) where item is equipped (using enum equip_pos for bitmasking)
    char identify;
    char refine;
    char attribute;
    short card[MAX_SLOTS];
    unsigned int expire_time;
    };
    struct point {
    unsigned short map;
    short x,y;
    };
    enum e_skill_flag
    {
    SKILL_FLAG_PERMANENT,
    SKILL_FLAG_TEMPORARY,
    SKILL_FLAG_PLAGIARIZED,
    SKILL_FLAG_REPLACED_LV_0, // temporary skill overshadowing permanent skill of level 'N - SKILL_FLAG_REPLACED_LV_0'
    //...
    };
    struct s_skill {
    unsigned short id;
    unsigned char lv;
    unsigned char flag; // see enum e_skill_flag
    };
    struct global_reg {
    char str[32];
    char value[256];
    };
    //Holds array of global registries, used by the char server and converter.
    struct accreg {
    int account_id, char_id;
    int reg_num;
    struct global_reg reg[MAX_REG_NUM];
    };
    //For saving status changes across sessions. [Skotlex]
    struct status_change_data {
    unsigned short type; //SC_type
    long val1, val2, val3, val4, tick; //Remaining duration.
    };
    struct storage_data {
    int storage_amount;
    struct item items[MAX_STORAGE];
    };
    struct guild_storage {
    int dirty;
    int guild_id;
    short storage_status;
    short storage_amount;
    struct item items[MAX_GUILD_STORAGE];
    };
    struct s_pet {
    int account_id;
    int char_id;
    int pet_id;
    short class_;
    short level;
    short egg_id;//pet egg id
    short equip;//pet equip name_id
    short intimate;//pet friendly
    short hungry;//pet hungry
    char name[NAME_LENGTH];
    char rename_flag;
    char incuvate;
    };
    struct s_homunculus { //[orn]
    char name[NAME_LENGTH];
    int hom_id;
    int char_id;
    short class_;
    int hp,max_hp,sp,max_sp;
    unsigned int intimacy; //[orn]
    short hunger;
    struct s_skill hskill[MAX_HOMUNSKILL]; //albator
    short skillpts;
    short level;
    unsigned int exp;
    short rename_flag;
    short vaporize; //albator
    int str ;
    int agi ;
    int vit ;
    int int_ ;
    int dex ;
    int luk ;
    };
    struct s_mercenary {
    int mercenary_id;
    int char_id;
    short class_;
    int hp, sp;
    unsigned int kill_count;
    unsigned int life_time;
    };
    struct s_friend {
    int account_id;
    int char_id;
    char name[NAME_LENGTH];
    };
    #ifdef HOTKEY_SAVING
    struct hotkey {
    unsigned int id;
    unsigned short lv;
    unsigned char type; // 0: item, 1: skill
    };
    #endif
    struct mmo_charstatus {
    int char_id;
    int account_id;
    int partner_id;
    int father;
    int mother;
    int child;
    unsigned int base_exp,job_exp;
    int zeny;
    short class_;
    unsigned int status_point,skill_point;
    int hp,max_hp,sp,max_sp;
    unsigned int option;
    short manner;
    unsigned char karma;
    short hair,hair_color,clothes_color;
    int party_id,guild_id,pet_id,hom_id,mer_id;
    int fame;
    // Mercenary Guilds Rank
    int arch_faith, arch_calls;
    int spear_faith, spear_calls;
    int sword_faith, sword_calls;
    short weapon; // enum weapon_type
    short shield; // view-id
    short head_top,head_mid,head_bottom;
    short robe;
    char name[NAME_LENGTH];
    unsigned int base_level,job_level;
    short str,agi,vit,int_,dex,luk;
    unsigned char slot,sex;
    uint32 mapip;
    uint16 mapport;
    struct point last_point,save_point,memo_point[MAX_MEMOPOINTS];
    struct item inventory[MAX_INVENTORY],cart[MAX_CART];
    struct storage_data storage;
    struct s_skill skill[MAX_SKILL];
    struct s_friend friends[MAX_FRIENDS]; //New friend system [Skotlex]
    #ifdef HOTKEY_SAVING
    struct hotkey hotkeys[MAX_HOTKEYS];
    #endif
    int abitem[10];
    int abnitem[10];
    int abprice[10];
    int abcount;
    int abchar_id;
    bool autobuy;
    bool stab;
    bool show_equip;
    short rename;
    time_t delete_date;
    };
    typedef enum mail_status {
    MAIL_NEW,
    MAIL_UNREAD,
    MAIL_READ,
    } mail_status;
    struct mail_message {
    int id;
    int send_id;
    char send_name[NAME_LENGTH];
    int dest_id;
    char dest_name[NAME_LENGTH];
    char title[MAIL_TITLE_LENGTH];
    char body[MAIL_BODY_LENGTH];
    mail_status status;
    time_t timestamp; // marks when the message was sent
    int zeny;
    struct item item;
    };
    struct mail_data {
    short amount;
    bool full;
    short unchecked, unread;
    struct mail_message msg[MAIL_MAX_INBOX];
    };
    struct auction_data {
    unsigned int auction_id;
    int seller_id;
    char seller_name[NAME_LENGTH];
    int buyer_id;
    char buyer_name[NAME_LENGTH];

    struct item item;
    // This data is required for searching, as itemdb is not read by char server
    char item_name[ITEM_NAME_LENGTH];
    short type;
    unsigned short hours;
    int price, buynow;
    time_t timestamp; // auction's end time
    int auction_end_timer;
    };
    struct registry {
    int global_num;
    struct global_reg global[GLOBAL_REG_NUM];
    int account_num;
    struct global_reg account[ACCOUNT_REG_NUM];
    int account2_num;
    struct global_reg account2[ACCOUNT_REG2_NUM];
    };
    struct party_member {
    int account_id;
    int char_id;
    char name[NAME_LENGTH];
    unsigned short class_;
    unsigned short map;
    unsigned short lv;
    unsigned leader : 1,
    online : 1;
    };
    struct party {
    int party_id;
    char name[NAME_LENGTH];
    unsigned char count; //Count of online characters.
    unsigned exp : 1,
    item : 2; //&1: Party-Share (round-robin), &2: pickup style: shared.
    struct party_member member[MAX_PARTY];
    };
    struct map_session_data;
    struct guild_member {
    int account_id, char_id;
    short hair,hair_color,gender,class_,lv;
    uint64 exp;
    int exp_payper;
    short online,position;
    char name[NAME_LENGTH];
    struct map_session_data *sd;
    unsigned char modified;
    };
    struct guild_position {
    char name[NAME_LENGTH];
    int mode;
    int exp_mode;
    unsigned char modified;
    };
    struct guild_alliance {
    int opposition;
    int guild_id;
    char name[NAME_LENGTH];
    };
    struct guild_expulsion {
    char name[NAME_LENGTH];
    char mes[40];
    int account_id;
    };
    struct guild_skill {
    int id,lv;
    };
    struct guild {
    int guild_id;
    short guild_lv, connect_member, max_member, average_lv;
    uint64 exp;
    unsigned int next_exp;
    int skill_point;
    char name[NAME_LENGTH],master[NAME_LENGTH];
    struct guild_member member[MAX_GUILD];
    struct guild_position position[MAX_GUILDPOSITION];
    char mes1[MAX_GUILDMES1],mes2[MAX_GUILDMES2];
    int emblem_len,emblem_id;
    char emblem_data[2048];
    struct guild_alliance alliance[MAX_GUILDALLIANCE];
    struct guild_expulsion expulsion[MAX_GUILDEXPULSION];
    struct guild_skill skill[MAX_GUILDSKILL];
    unsigned short save_flag; // for TXT saving
    };
    struct guild_castle {
    int castle_id;
    int mapindex;
    char castle_name[NAME_LENGTH];
    char castle_event[NAME_LENGTH];
    int guild_id;
    int economy;
    int defense;
    int triggerE;
    int triggerD;
    int nextTime;
    int payTime;
    int createTime;
    int visibleC;
    struct {
    unsigned visible : 1;
    int id; // object id
    } guardian[MAX_GUARDIANS];
    int* temp_guardians; // ids of temporary guardians (mobs)
    int temp_guardians_max;
    };
    struct fame_list {
    int id;
    int fame;
    char name[NAME_LENGTH];
    };
    enum {
    GBI_EXP =1, // ѓMѓ‹ѓh‚МEXP
    GBI_GUILDLV, // ѓMѓ‹ѓh‚МLv
    GBI_SKILLPOINT, // ѓMѓ‹ѓh‚МѓXѓLѓ‹ѓ|ѓCѓ“ѓg
    GBI_SKILLLV, // ѓMѓ‹ѓhѓXѓLѓ‹Lv
    };
    enum {
    GMI_POSITION =0, // ѓЃѓ“ѓoЃ[‚М–рђE•ПЌX
    GMI_EXP,
    GMI_HAIR,
    GMI_HAIR_COLOR,
    GMI_GENDER,
    GMI_CLASS,
    GMI_LEVEL,
    };
    enum {
    GD_SKILLBASE=10000,
    GD_APPROVAL=10000,
    GD_KAFRACONTRACT=10001,
    GD_GUARDRESEARCH=10002,
    GD_GUARDUP=10003,
    GD_EXTENSION=10004,
    GD_GLORYGUILD=10005,
    GD_LEADERSHIP=10006,
    GD_GLORYWOUNDS=10007,
    GD_SOULCOLD=10008,
    GD_HAWKEYES=10009,
    GD_BATTLEORDER=10010,
    GD_REGENERATION=10011,
    GD_RESTORE=10012,
    GD_EMERGENCYCALL=10013,
    GD_DEVELOPMENT=10014,
    GD_MAX,
    };

    //These mark the ID of the jobs, as expected by the client. [Skotlex]
    enum {
    JOB_NOVICE,
    JOB_SWORDMAN,
    JOB_MAGE,
    JOB_ARCHER,
    JOB_ACOLYTE,
    JOB_MERCHANT,
    JOB_THIEF,
    JOB_KNIGHT,
    JOB_PRIEST,
    JOB_WIZARD,
    JOB_BLACKSMITH,
    JOB_HUNTER,
    JOB_ASSASSIN,
    JOB_KNIGHT2,
    JOB_CRUSADER,
    JOB_MONK,
    JOB_SAGE,
    JOB_ROGUE,
    JOB_ALCHEMIST,
    JOB_BARD,
    JOB_DANCER,
    JOB_CRUSADER2,
    JOB_WEDDING,
    JOB_SUPER_NOVICE,
    JOB_GUNSLINGER,
    JOB_NINJA,
    JOB_XMAS,
    JOB_SUMMER,
    JOB_MAX_BASIC,
    JOB_NOVICE_HIGH = 4001,
    JOB_SWORDMAN_HIGH,
    JOB_MAGE_HIGH,
    JOB_ARCHER_HIGH,
    JOB_ACOLYTE_HIGH,
    JOB_MERCHANT_HIGH,
    JOB_THIEF_HIGH,
    JOB_LORD_KNIGHT,
    JOB_HIGH_PRIEST,
    JOB_HIGH_WIZARD,
    JOB_WHITESMITH,
    JOB_SNIPER,
    JOB_ASSASSIN_CROSS,
    JOB_LORD_KNIGHT2,
    JOB_PALADIN,
    JOB_CHAMPION,
    JOB_PROFESSOR,
    JOB_STALKER,
    JOB_CREATOR,
    JOB_CLOWN,
    JOB_GYPSY,
    JOB_PALADIN2,
    JOB_BABY,
    JOB_BABY_SWORDMAN,
    JOB_BABY_MAGE,
    JOB_BABY_ARCHER,
    JOB_BABY_ACOLYTE,
    JOB_BABY_MERCHANT,
    JOB_BABY_THIEF,
    JOB_BABY_KNIGHT,
    JOB_BABY_PRIEST,
    JOB_BABY_WIZARD,
    JOB_BABY_BLACKSMITH,
    JOB_BABY_HUNTER,
    JOB_BABY_ASSASSIN,
    JOB_BABY_KNIGHT2,
    JOB_BABY_CRUSADER,
    JOB_BABY_MONK,
    JOB_BABY_SAGE,
    JOB_BABY_ROGUE,
    JOB_BABY_ALCHEMIST,
    JOB_BABY_BARD,
    JOB_BABY_DANCER,
    JOB_BABY_CRUSADER2,
    JOB_SUPER_BABY,
    JOB_TAEKWON,
    JOB_STAR_GLADIATOR,
    JOB_STAR_GLADIATOR2,
    JOB_SOUL_LINKER,
    JOB_MAX,
    };
    enum {
    SEX_FEMALE = 0,
    SEX_MALE,
    SEX_SERVER
    };
    // sanity checks...
    #if MAX_ZENY > INT_MAX
    #error MAX_ZENY is too big
    #endif
    #endif /* _MMO_H_ */

    Вот пробуй !

  6. Создаём себе exe файл (Sakexe и Ragexe Renewal)

    Последние kRO Ragexe REnewal DIFF / Последние kRO Sakexe DIFF

    Для RagexeRE 2009-12-23b + необходимо обновление. Lub файлы получить его ЗДЕСЬ!

    Требуется

    k3dt's DIFF Patch v2.20

    kRO - English Translation

    Packetver 23, С eAthena Trunk 13293 или выше версии

    Для использования RagexeRE Вам необходимо:

    Обновлено Trunk еА (2009/11/19 +).

    Переименовать Sclientinfo.xml в Clientinfo.xml.

    1: Изменение версии пакетов по умолчанию, чтобы "default" в db/packet_db.txt

    2: Изменение поддерживается PACKETVER в src/common/mmo.h в самый последний

    3: перекомпилировать.

    Если у вас есть проблемы при подключении к карте сервера

    Вы должны изменить src/map/clif.h так что PACKETVER установлен клиент даты.

    например. для 2009-02-04bSakexe, PACKETVER будет 20090204:


    #define PACKETVER 20090204

    После того как вы сделали это, вы должны перекомпилировать сборки серверов.

    Источник

    • Upvote 3

  7. Index: src/common/mmo.h // находите данный файл в вашем эмуляторе,открываете блокнотом (рекомендую notepad++)
    ===================================================================
    --- src/common/mmo.h (revision 12718)
    +++ src/common/mmo.h (working copy)
    @@ -248,7 +248,7 @@ // Находите примерно эту строку.
    unsigned char karma;// Забиваете в поиск данную строку, проверяете рядом ли она с цифрами выше.
    short hair,hair_color,clothes_color;
    int party_id,guild_id,pet_id,hom_id;
    - int fame; // Минус в данной строке означает что эту строку удаляем в вашем файле.
    + int fame,pvprank,aura; // Плюс означает что добавляем эту строку в ваш файл.

    short weapon; // enum weapon_type
    short shield; // view-id

    Дальше так само, и после окончания изменений, делаем Рекомпиляцию!

    • Upvote 2
  8. народ помогите со скриптом на ауру в грф всё запихнул как сделать в бд чтоб аура отображалась

    25953#

    Ancient Aura token. If you use it, your character would able to activate ^FFA500Aura 300.^000000

    Type: ^FFA500Aura Token^000000

    Weight :^777777 1^000000

    Applicable Job :^777777 Every Job^000000

    или чтоб кольцом была

    15824#

    A mysterious magical ring that can change it's wearer aura to the different levels of magic.

    This ring seems to change it's wearer aura to level 25.

    Class :^777777 Accessory^000000

    Defense :^777777 0^000000

    Weight :^777777 1^000000

    Required Level :^777777 1^000000

    Applicable Job :^777777 Every Job^000000

    Ты что-то не то правишь,ты пробуешь сорс мод [sRC] @aura? Если да то править нужно item_db!

    Если обычные текстурные ауры из папки effect, то править нужно в конфигах,а включаеться она в игре коммандой /aura!

    • Upvote 1
×
×
  • Создать...
Яндекс.Метрика