Формула стила (Steal - скил воров)

Тема в разделе "Игровые вопросы", создана пользователем 1nsane, 17 май 2009.

  1. Главврач

    Главврач Игрок

    На форуме с:
    11 мар 2009
    Сообщения:
    205
    У Вас на родине это называется "ирония"?
  2. Винсент

    Винсент Игрок

    На форуме с:
    7 сен 2008
    Сообщения:
    1,963
    А вот сокол под критами вылитает спокойно.
  3. AlexaWhite

    AlexaWhite Игрок

    На форуме с:
    31 мар 2008
    Сообщения:
    2,060
    крит и простая атака не считаются чем-то особенным для автокаста.
    Дабл атака и трипл - скиловые удары.
    Но тут я не знаю, надо в код лезть. Потому что механика снетча может отличаться от автокаст карт. Если же не отличается - то со скилов (дабл атака и трипл к ним относятся) воровать нельзя. Вечерком скажу точней, полуркав в коде.
  4. Главврач

    Главврач Игрок

    На форуме с:
    11 мар 2009
    Сообщения:
    205
    Вот даже как. Извиняюсь за дезинформацию.
  5. Vetal

    Vetal Игрок

    На форуме с:
    27 авг 2008
    Сообщения:
    332
    С даблатаки стил срабатывает:
    [​IMG]
    С трипла, по-моему, не должен - он считается скилловой атакой со всеми вытекающими и это есть в описании скилла.
    1nsane нравится это.
  6. ASPirine

    ASPirine Заблокирован

    На форуме с:
    24 апр 2008
    Сообщения:
    2,005
    С далбатаки стил работает 100%, с крита вроде тоже. С трипла не должен.
  7. 1nsane

    1nsane Игрок

    На форуме с:
    29 апр 2009
    Сообщения:
    380
    Это подверждённая информация?

    И вы так и не выложили скрипт скила стил...
  8. AlexaWhite

    AlexaWhite Игрок

    На форуме с:
    31 мар 2008
    Сообщения:
    2,060
    Код:
    			// Gank
    			if(dstmd && sd->status.weapon != W_BOW &&
    				(skill=pc_checkskill(sd,RG_SNATCHER)) > 0 &&
    				(skill*15 + 55) + pc_checkskill(sd,TF_STEAL)*10 > rand()%1000) {
    				if(pc_steal_item(sd,bl,pc_checkskill(sd,TF_STEAL)))
    					clif_skill_nodamage(src,bl,TF_STEAL,skill,1);
    				else
    					clif_skill_fail(sd,RG_SNATCHER,0,0);
    
    и

    Код:
     *------------------------------------------*/
    int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv)
    {
    	int i,itemid,flag;
    	double rate;
    	struct status_data *sd_status, *md_status;
    	struct mob_data *md;
    	struct item tmp_item;
    
    	if(!sd || !bl || bl->type!=BL_MOB)
    		return 0;
    
    	md = (TBL_MOB *)bl;
    
    	if(md->state.steal_flag == UCHAR_MAX || md->sc.opt1) //already stolen from / status change check
    		return 0;
    	
    	sd_status= status_get_status_data(&sd->bl);
    	md_status= status_get_status_data(bl);
    
    	if(md->master_id || md_status->mode&MD_BOSS ||
    		(md->class_>=1324 && md->class_<1364) || // prevent stealing from treasure boxes [Valaris]
    		map[bl->m].flag.nomobloot || // check noloot map flag [Lorky]
    		(battle_config.skill_steal_max_tries && //Reached limit of steal attempts. [Lupus]
    			md->state.steal_flag++ >= battle_config.skill_steal_max_tries)
      	) { //Can't steal from
    		md->state.steal_flag = UCHAR_MAX;
    		return 0;
    	}
    
    	// base skill success chance (percentual)
    	rate = (sd_status->dex - md_status->dex)/2 + lv*6 + 4;
    	rate += sd->add_steal_rate;
    		
    	if( rate < 1 )
    		return 0;
    
    	// Try dropping one item, in the order from first to last possible slot.
    	// Droprate is affected by the skill success rate.
    	for( i = 0; i < MAX_STEAL_DROP; i++ )
    		if( md->db->dropitem[i].nameid > 0 && itemdb_exists(md->db->dropitem[i].nameid) && rand() % 10000 < md->db->dropitem[i].p * rate/100. )
    			break;
    	if( i == MAX_STEAL_DROP )
    		return 0;
    
    	itemid = md->db->dropitem[i].nameid;
    	memset(&tmp_item,0,sizeof(tmp_item));
    	tmp_item.nameid = itemid;
    	tmp_item.amount = 1;
    	tmp_item.identify = itemdb_isidentified(itemid);
    	flag = pc_additem(sd,&tmp_item,1);
    
    	//TODO: Should we disable stealing when the item you stole couldn't be added to your inventory? Perhaps players will figure out a way to exploit this behaviour otherwise?
    	md->state.steal_flag = UCHAR_MAX; //you can't steal from this mob any more
    
    	if(flag) { //Failed to steal due to overweight
    		clif_additem(sd,0,0,flag);
    		return 0;
    	}
    	
    	if(battle_config.show_steal_in_same_party)
    		party_foreachsamemap(pc_show_steal,sd,AREA_SIZE,sd,tmp_item.nameid);
    
    	//Logs items, Stolen from mobs [Lupus]
    	if(log_config.enable_logs&0x80) {
    		log_pick_mob(md, "M", itemid, -1, NULL);
    		log_pick_pc(sd, "P", itemid, 1, NULL);
    	}
    		
    	//A Rare Steal Global Announce by Lupus
    	if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) {
    		struct item_data *i_data;
    		char message[128];
    		i_data = itemdb_search(itemid);
    		sprintf (message, msg_txt(542), (sd->status.name != NULL)?sd->status.name :"GM", md->db->jname, i_data->jname, (float)md->db->dropitem[i].p/100);
    		//MSG: "'%s' stole %s's %s (chance: %0.02f%%)"
    		intif_GMmessage(message,strlen(message)+1,0);
    	}
    	return 1;
    }
    
    /*==========================================
    
    вот тут код воровства, как раз тут показан шанс своровать.
    Хм...
    ничего не нашла на счёт того что должно оно срабатывать во время дабл атаки или нет.
    1nsane нравится это.
  9. palmtop tiger

    palmtop tiger Игрок

    На форуме с:
    20 апр 2008
    Сообщения:
    763
    В продолжение...
    ...автостил с крита:
    [​IMG]

    С трипла не тестила: лень искать в такое время монка (свой не прокачан) -_-
    1nsane нравится это.
  10. 1nsane

    1nsane Игрок

    На форуме с:
    29 апр 2009
    Сообщения:
    380
    Нащет демонстрации с крита и дабла огромное спасиба;), осталось выяснить про зависимости от декс....


    Розшифруйте пожалуста код обычными формулами, я не знаю какие цыфры что значат =))
  11. salvador

    salvador Игрок

    На форуме с:
    28 апр 2008
    Сообщения:
    4,874
    ну моей родине это называется гей-ревность:cool:
  12. Valkyrie

    Valkyrie Заблокирован

    На форуме с:
    16 апр 2008
    Сообщения:
    3,737
    Адрес:
    Калуга
    Пару месяцев назад был прецедетнт стила карты. Так что пост Икса не роляет.
  13. Regent

    Regent Игрок

    На форуме с:
    11 май 2008
    Сообщения:
    3,419
    Адрес:
    Питер, Сахалин
    скрииин! пруфпик!!!