Jump to content

Break

Members
  • Posts

    158
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Break

  1. Is it possible to change textures crit damage on non-interfering, say for example a transparent, so you can see only the numbers (without any red labels). If so, who do not share difficult or at least tell me the name of the file.
  2. You do not want to modify the code so that a click on item page would lead to the corresponding page poring.ru base in a new window?
  3. Break

    costumeitem

    Prompt how to forbid to sell costume equipment or to put it in a cart?
  4. Prompt, how to forbid to sell costume equipment or to put it in a cart?
  5. How to fix sale of costume equipment?
  6. Сделал через цикл, вроде бы работает. Осталось теперь разобраться с нечетным кол-вом игроков на карте... И да ув. Lilith просьба пишите под eAthena если вас конечно это не затруднит, а то тот код что вы выложили не работает и его пришлось переписывать под свой эмуль)
  7. За старания конечно спасибо, но к сожалению не работает Вот остальные исходники, может помогут) BUILDIN_FUNC(createparty) { char* nombre; //Genera un warning C4090 int cid; TBL_PC* sd; nombre = script_getstr(st,2); cid = script_getnum(st,3); sd = map_charid2sd(cid); //Obtiene el map_session_data del char_id if( sd == NULL ) { script_pushint(st, -1); return 0; //No estб enganchado a un usuario } if( sd->status.party_id > 0 || sd->party_joining || sd->party_creating ) {// already associated with a party script_pushint(st, 0); return 0; } party_create(sd, nombre, 0, 0); //Manda a crear la Party script_pushint(st, 1); return 0; } BUILDIN_FUNC(inviteparty) { struct script_data* data; int32 id; int32 idx; int32 i; int32 n; int32 arr[256]; struct map_session_data *sd, *tsd; data = script_getdata(st, 2); id = reference_getid(data); idx = reference_getindex(data); n = script_getnum(st, 3); for( i = 0; i < n; ++i ) { arr[i]=(int32)get_val2(st, reference_uid(id, idx + i), reference_getref(data)); script_removetop(st, -1, 0); } sd=map_charid2sd(arr[0]); if (sd == NULL) { return 0; } for( i = 1; i < n; ++i ) { tsd=map_charid2sd(arr[i]); if (tsd == NULL) { continue; } if (party_invite(sd,tsd)) { party_reply_invite(tsd,sd->status.account_id,1); }; } return 0; } BUILDIN_DEF(inviteparty,"ri"), //YXAZA BUILDIN_DEF(createparty,"si"), Кстати возникла ещё одна проблема. Подскажите как правильно проверить принадлежит ли игрок одному из списков, и после этого вычитать его. Мой вариант не хочет работать. Нужный кусок выделил тегом prontera,0,0,0 script pvpLadder2 -1,{ OnPCDieEvent: if (getmapxy($@killer_map$,@mapx,@mapy,0,strcharinfo(0))!=0) end; if ( ($@killer_map$=="pvp_n_1-5") ){ warp "prontera",180,160; [b]if($@sns_group1[0]){ set $@sns_pt1,$@sns_pt1-1;} if($@sns_group2[0]){ set $@sns_pt2,$@sns_pt2-1;}[/b] if($@sns_pt1 == 0 && $@sns_pt2 == 0) { mapannounce "pvp_n_1-5","[Стенка на Стенку] бой завершен!!!",17; enablenpc "SNS Prize"; set $@MeveSNS, 0; cleararray $@mapusersid[0],0,getarraysize($@mapusersid); cleararray $@sns_group1[0],0,getarraysize($@sns_group1); cleararray $@sns_group2[0],0,getarraysize($@sns_group2); set $@sns_member,0; end; } mapannounce "pvp_n_1-5","Выживших - Команда Синих: "+$@sns_pt1+" Команда Красных: "+$@sns_pt2,1; end; } }
  8. Обьяснить не могу что они выполняют, т.к не я эти скриптовые команды писал, лишь догадки только... Вот сам код, если разберетесь BUILDIN_FUNC(mapusersid) { int m = map_mapname2mapid(script_getstr(st,2)),users = 0; struct s_mapiterator* iter; TBL_PC *sd; if (m < 0) { script_pushint(st,-1); return 0; } iter = mapit_getallusers(); for (sd = (TBL_PC*)mapit_first(iter);mapit_exists(iter);sd = (TBL_PC*)mapit_next(iter)) if ((sd->bl.m == m) && (!pc_isdead(sd))) { mapreg_setreg(add_str("$@mapusersid") + (users<<24), sd->status.char_id); mapreg_setregstr(add_str("$@mapusersname$")+(users<<24),sd->status.name); users++;} mapit_free(iter); return 0; } BUILDIN_FUNC(leaveparty) { struct script_data* data; int32 id; int32 idx; int32 i; int32 n; int32 arr[256]; struct map_session_data *sd; data = script_getdata(st, 2); id = reference_getid(data); idx = reference_getindex(data); n = script_getnum(st, 3); for( i = 0; i < n; ++i ) { arr[i]=(int32)get_val2(st, reference_uid(id, idx + i), reference_getref(data)); script_removetop(st, -1, 0); if (((sd=map_charid2sd(arr[i])) != NULL ) && sd->status.party_id) { party_leave(sd); } } return 0; } BUILDIN_DEF(mapusersid,"s"), //NetherRO BUILDIN_DEF(leaveparty,"ri"), //YXAZA
  9. Что тут непонятного? Распределение игроков на карте идёт по ровну в две пати, если же игроков нечетное кол-во, то один всегда остаётся без пати... Допустим на карте 5 человек, из них 4 распределяет по 2 человека в каждую пати и 1 в пролёте получается =/
  10. Дело в том, что когда нечетное кол-во игроков на карте, то разделение идет между четным кол-вом, а нечетный остается в центре карты не попадая ни в одну из пати, что в таком случае нужно сделать? function script nashest36 { mapusersid("pvp_n_1-5"); leaveparty($@mapusersid[0],getarraysize($@mapusersid)); set $@sns_member,(getmapusers("pvp_n_1-5")/2); copyarray $@sns_group1[0],$@mapusersid[0],$@sns_member; copyarray $@sns_group2[0],$@mapusersid[$@sns_member],$@sns_member; sleep 2000; set $@random,rand(1,100); createparty("Blue "+$@random,$@sns_group1); set $@sns_pt1,getarraysize($@sns_group1); createparty("Red "+$@random,$@sns_group2); set $@sns_pt2,getarraysize($@sns_group2); sleep 2000; if(getmapusers("pvp_n_1-5")>2 && getmapusers("pvp_n_1-5")<4) { inviteparty($@sns_group2[0],$@sns_member);} else if (getmapusers("pvp_n_1-5")>3) { inviteparty($@sns_group1[0],$@sns_member); inviteparty($@sns_group2[0],$@sns_member);} for (set .i, 0; .i < $@sns_member; set .i, .i+1) { warpchar "pvp_n_1-5",66,100,$@sns_group1[.i]; warpchar "pvp_n_1-5",136,100,$@sns_group2[.i];} pvpon "pvp_n_1-5"; } pvp_n_1-5,99,103,5 script Stenka_test 800,{ callfunc "nashest36"; close; }
  11. С массивами я особо не дружу, лучше подскажи как без них решить мою проблему, а то я уже много чего перепробывал, а толку никакого либо показывает всех чаров на 3 местах, либо на 2 или показывает вроде бы нормально сначала, но до тех пор пока кто нибудь не тыкнет и не сдаст лут и всё собьется и хрен знает в каком порядке встанет.
  12. Мне подсказали методом переноса сделать позиции, но не фурычит всё равно... Изначально было так: if(loot2>$leaderloot){ set $leaderloot,loot2; set $leaderchar$,strcharinfo(0); } if(loot2>$leaderloot2){ set $leaderloot2,loot2; set $leaderchar2$,strcharinfo(0); } if(loot2>$leaderloot3){ set $leaderloot3,loot2; set $leaderchar3$,strcharinfo(0); }
  13. Написал глобальный эвент, но возникла одна проблема, топ-3 рейтинг чаров сдавших лут не отображает правильно, т.е не так как надо. Подскажите в чём мой косяк? - script gxdcxs -1,{ OnInit: if($ge!=0){end;} set $leaderchar$,0; set $leaderloot,0; set $leaderchar2$,0; set $leaderloot2,0; set $leaderchar3$,0; set $leaderloot3,0; set $ge,1; end; } - script begin -1,{ //OnDay<month><day>: OnDay0705: set $leaderchar$,0; set $leaderloot,0; set $leaderchar2$,0; set $leaderloot2,0; set $leaderchar3$,0; set $leaderloot3,0; set $ge,1; announce "Глобальный эвент начался. Подробности у NPC в пронтере!",0; end; OnDay0712: set $ge,0; set $np,1; announce "Глобальный эвент окончен. Победитель: "+$leaderchar$+", поздравляем его!! Приз у NPC.",0; end; } prontera,162,194,3 script Глобальный эвент 709,{ // 1097,7005,7449, 662 if($ge!=1){ mes "Для тебя у меня сейчас нет задания."; close;} set .item,7449; mes "[Глобальный эвент]"; if(loot2>$leaderloot){ set $leaderloot,loot2; set $leaderchar$,strcharinfo(0);} if($np==1){ if($leaderchar$==strcharinfo(0)){ if(select("Получить приз:Отмена")==2){close;} mes "Держи свой приз."; getitem 20197,1; getitem 7227,3; set $leaderchar$,0; set $leaderloot,0; set $np,0; close; }close;} set loot,countitem(.item); mes "Лидер дня: "+$leaderchar$+". Он сдал - "+$leaderloot+"x "+getitemname(.item)+"."; mes "------------------------"; switch(select("Топ-3","Сдать лут","Ваша Статистика","Задание","Последний срок")){ case 1: if(loot2>$leaderloot){ set $leaderloot3, $leaderloot2; set $leaderloot2, $leaderloot; set $leaderloot,loot2; set $leaderchar3$, $leaderchar2$; set $leaderchar2$, $leaderchar$; set $leaderchar$,strcharinfo(0); } if(loot2>$leaderloot2){ set $leaderloot3, $leaderloot2; set $leaderloot, $leaderloot; set $leaderloot2,loot2; set $leaderchar3$, $leaderchar2$; set $leaderchar$, $leaderchar$; set $leaderchar2$,strcharinfo(0); } if(loot2>$leaderloot3){ set $leaderloot2, $leaderloot2; set $leaderloot, $leaderloot; set $leaderloot3,loot2; set $leaderchar2$, $leaderchar2$; set $leaderchar$, $leaderchar$; set $leaderchar3$,strcharinfo(0); } mes "Место - ник - кол-во"; mes "1. "+$leaderchar$+" "+$leaderloot+""; mes "2. "+$leaderchar2$+" "+$leaderloot2+""; mes "3. "+$leaderchar3$+" "+$leaderloot3+""; close; case 2: if(loot<1){mes "У тебя нет необходимого лута!";close;} delitem .item,loot; set loot2,loot2+loot; close; case 3: mes "Вы уже сдали всего "+loot2+" лута."; close; case 4: mes "Вам необходимо сдавать следующий лут: "+getitemname(.item)+". Игрок, сдавший наибольшее кол-во лута (лидер) - побеждает."; close; case 5: mes "Последний срок сдачи лута - 11 июля. Не опоздайте!"; close; } }
×
×
  • Create New...