Jump to content

Nezd

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by Nezd

  1. Hello. I need help, dont know where to look and how to make it more usefull...

    I need to make passive skill, which give player % to cast skill when hit by attacker(not cast ON attacker(like storm_gust))

    and

    I need to make passive skill, which give player % to cast skill ON attacker when hit by attacker.

    Soo i look in src, for example AS_POISONREACT or LK_PARRYING JUST to anderstand how it's work...nothing help me.

    And i look how card status work - cand anderstand and find anyfing...

    If somebody know how to make or know where to find example... tell me THX!

  2. Hello!

    I make custom skill, summon mob:

    case SS_SUMMON:
     clif_specialeffect(&sd->bl, 344,  AREA);
     {
      int summons[5] = { 2710, 2711, 2712, 2713, 2714 };
      int class_ = summons[skilllv - 1];
      struct mob_data *md;
      // Correct info, don't change any of this! [celest]
      md = mob_once_spawn_sub(src, src->m, 0, 0, status_get_name(src),class_,"");
      if (md) {
    md->master_id = src->id;
    md->special_state.ai = 2;
    if( md->deletetimer != INVALID_TIMER )
     delete_timer(md->deletetimer, mob_timer_delete);
    md->deletetimer=add_timer(tick+(skilllv*30000),mob_timer_delete,md->bl.id,0);
    mob_spawn (md); //Now it is ready for spawning.
      }
     }
    

    1. All good. But i need summon w/o attack, only skill cast attack. How to make it?

    I play with special_state.ai = N; - nothing, try to make mob mode, nothing.

    2. Why monsters dont attack summon mob? after take dmg from summon they are attack char, how to fix this ?

    Thx.

  3. Последняя версия, компилятор 2010 студия, прккрастно работал и работает, проб лема в новых ревизиях. Начиная с мая 2012 начались такие вот ошибки с переодичностью в неделю. неделю нет ошиок неделю есть.

  4. Уже не первый рза наблюдаю проблему у новых ревизий афины.

    : DB error - Using unsupported buffer type: 1615701 (parameter: 3)

    [Debug]: at c:\users\hostuser030\desktop\eathena\src\login\account_sql.c:637 - U

    PDATE `login` SET `userid`=?,`user_pass`=?,`sex`=?,`email`=?,`level`=?,`state`=?

    ,`unban_time`=?,`expiration_time`=?,`logincount`=?,`lastlogin`=?,`last_ip`=?,`bi

    rthdate`=? WHERE `account_id` = '1'

    [status]: Connection of the char-server '' accepted.

    Посмотрел, почитал в инете информацию, проблема явно связана с версией сервера mysql, версия сервера 5.5, но почемуто проблемы получились только недавно...

    Строка на которую указывает ошибка:

    SqlStmt_ShowDebug(stmt);

    Кусок кода целиком:

    static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, bool is_new)

    {

    Sql* sql_handle = db->accounts;

    SqlStmt* stmt = SqlStmt_Malloc(sql_handle);

    bool result = false;

    int i;

    // try

    do

    {

    if( SQL_SUCCESS != Sql_QueryStr(sql_handle, "START TRANSACTION") )

    {

    Sql_ShowDebug(sql_handle);

    break;

    }

    if( is_new )

    {// insert into account table

    if( SQL_SUCCESS != SqlStmt_Prepare(stmt,

    "INSERT INTO `%s` (`account_id`, `userid`, `user_pass`, `sex`, `email`, `level`, `state`, `unban_time`, `expiration_time`, `logincount`, `lastlogin`, `last_ip`, `birthdate`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",

    db->account_db)

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_INT, (void*)&acc->account_id, sizeof(acc->account_id))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 1, SQLDT_STRING, (void*)acc->userid, strlen(acc->userid))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 2, SQLDT_STRING, (void*)acc->pass, strlen(acc->pass))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 3, SQLDT_ENUM, (void*)&acc->sex, sizeof(acc->sex))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 4, SQLDT_STRING, (void*)&acc->email, strlen(acc->email))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 5, SQLDT_INT, (void*)&acc->level, sizeof(acc->level))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 6, SQLDT_UINT, (void*)&acc->state, sizeof(acc->state))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 7, SQLDT_LONG, (void*)&acc->unban_time, sizeof(acc->unban_time))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 8, SQLDT_INT, (void*)&acc->expiration_time, sizeof(acc->expiration_time))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 9, SQLDT_UINT, (void*)&acc->logincount, sizeof(acc->logincount))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 10, SQLDT_STRING, (void*)&acc->lastlogin, strlen(acc->lastlogin))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 11, SQLDT_STRING, (void*)&acc->last_ip, strlen(acc->last_ip))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 12, SQLDT_STRING, (void*)&acc->birthdate, strlen(acc->birthdate))

    || SQL_SUCCESS != SqlStmt_Execute(stmt)

    ) {

    SqlStmt_ShowDebug(stmt);

    break;

    }

    }

    else

    {// update account table

    if( SQL_SUCCESS != SqlStmt_Prepare(stmt, "UPDATE `%s` SET `userid`=?,`user_pass`=?,`sex`=?,`email`=?,`level`=?,`state`=?,`unban_time`=?,`expiration_time`=?,`logincount`=?,`lastlogin`=?,`last_ip`=?,`birthdate`=? WHERE `account_id` = '%d'", db->account_db, acc->account_id)

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, (void*)acc->userid, strlen(acc->userid))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 1, SQLDT_STRING, (void*)acc->pass, strlen(acc->pass))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 2, SQLDT_ENUM, (void*)&acc->sex, sizeof(acc->sex))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 3, SQLDT_STRING, (void*)acc->email, strlen(acc->email))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 4, SQLDT_INT, (void*)&acc->level, sizeof(acc->level))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 5, SQLDT_UINT, (void*)&acc->state, sizeof(acc->state))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 6, SQLDT_LONG, (void*)&acc->unban_time, sizeof(acc->unban_time))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 7, SQLDT_LONG, (void*)&acc->expiration_time, sizeof(acc->expiration_time))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 8, SQLDT_UINT, (void*)&acc->logincount, sizeof(acc->logincount))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 9, SQLDT_STRING, (void*)&acc->lastlogin, strlen(acc->lastlogin))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 10, SQLDT_STRING, (void*)&acc->last_ip, strlen(acc->last_ip))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 11, SQLDT_STRING, (void*)&acc->birthdate, strlen(acc->birthdate))

    || SQL_SUCCESS != SqlStmt_Execute(stmt)

    ) {

    SqlStmt_ShowDebug(stmt);

    break;

    }

    }

    // remove old account regs

    if( SQL_SUCCESS != Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `type`='1' AND `account_id`='%d'", db->accreg_db, acc->account_id) )

    {

    Sql_ShowDebug(sql_handle);

    break;

    }

    // insert new account regs

    if( SQL_SUCCESS != SqlStmt_Prepare(stmt, "INSERT INTO `%s` (`type`, `account_id`, `str`, `value`) VALUES ( 1 , '%d' , ? , ? );", db->accreg_db, acc->account_id) )

    {

    SqlStmt_ShowDebug(stmt);

    break;

    }

    for( i = 0; i < acc->account_reg2_num; ++i )

    {

    if( SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, (void*)acc->account_reg2[i].str, strlen(acc->account_reg2[i].str))

    || SQL_SUCCESS != SqlStmt_BindParam(stmt, 1, SQLDT_STRING, (void*)acc->account_reg2[i].value, strlen(acc->account_reg2[i].value))

    || SQL_SUCCESS != SqlStmt_Execute(stmt)

    ) {

    SqlStmt_ShowDebug(stmt);

    break;

    }

    }

    if( i < acc->account_reg2_num )

    {

    result = false;

    break;

    }

    // if we got this far, everything was successful

    result = true;

    } while(0);

    // finally

    result &= ( SQL_SUCCESS == Sql_QueryStr(sql_handle, (result == true) ? "COMMIT" : "ROLLBACK") );

    SqlStmt_Free(stmt);

    return result;

    }

    Мне кажется проблема связана с добавлением последнего пункта в базу деньрождения, если кто может чем помочь скажите куда копать...

×
×
  • Create New...