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

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

  1. Главврач

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

    У Вас на родине это называется "ирония"?
  2. Винсент

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

    А вот сокол под критами вылитает спокойно.
  3. AlexaWhite

    AlexaWhite Игрок

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

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

    Вот даже как. Извиняюсь за дезинформацию.
  5. Vetal

    Vetal Игрок

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

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

    С далбатаки стил работает 100%, с крита вроде тоже. С трипла не должен.
  7. 1nsane

    1nsane Игрок

    Это подверждённая информация?

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

    AlexaWhite Игрок

    Код:
    			// 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 Игрок

    В продолжение...
    ...автостил с крита:
    [​IMG]

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

    1nsane Игрок

    Нащет демонстрации с крита и дабла огромное спасиба;), осталось выяснить про зависимости от декс....


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

    salvador Игрок

    ну моей родине это называется гей-ревность:cool:
  12. Valkyrie

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

    Пару месяцев назад был прецедетнт стила карты. Так что пост Икса не роляет.
  13. Regent

    Regent Игрок

    скрииин! пруфпик!!!