Автор: GreatMan: Дата: 03.22.2011
Этот нпц для покраски шмоток. Выполняется путём замены спрайта на желаемый и сохраняет его в базу данных и остаётся дажэ когда перезаходиш, но есть проблемка, которая заключается в том что когда снимаеш и одеваеш шмотку сохранёный цвет меняется на стандарт. Вот как исправить эту проблему?
prontera,144,167,5 script Покраска вещей 465,{
mes "[Покраска]";
mes "Привет, я могу покрасить вашы вещи.";
next;
mes "[Покраска]";
mes "Что вы хотите покрасить?.";
switch(select("Одноцветные LKH","Двухцветные LKH","Санисы","Закрыть.")){
case 1:
if (countitem(23074) < 1) goto noitem;
set .id,23074;
goto lkh;
case 2:
if (countitem(23074) < 1) goto noitem;
set .id,23074;
goto lkh2;
case 3:
if (countitem(32155) < 1) goto noitem;
set .id,32155;
goto sunn;
case 4:
close;
noitem:
mes "У вас нету вещи...";
close;
lkh:
switch(select("Ультра Чёрные","Синие","Зелёные","Красные","Белые","Розовые","Коричневые","Фиолетовые","Чёрные","Простые","Нет, я передумал")){
case 1:
set .view,780;
goto do;
case 2:
set .view,721;
goto do;
case 3:
set .view,722;
goto do;
case 4:
set .view,723;
goto do;
case 5:
set .view,724;
goto do;
case 6:
set .view,775;
goto do;
case 7:
set .view,778;
goto do;
case 8:
set .view,779;
goto do;
case 9:
set .view,720;
goto do;
case 10:
set .view,99;
goto do;
case 11:
close;
}
lkh2:
switch(select("Чёрносиние","Чёрнозолотые","Чёрнозелёные","Чёрнорозовые","Чёрнокрасные","Чёрнобелые","Чёрножёлтые","Белочёрные","Белосиние","Белозелёные","Белоголубые","Белорозовые","Белофиолетовые","Белокрасные","Беложёлтые","Нет, я передумал")){
case 1:
set .view,773;
goto do;
case 2:
set .view,772;
goto do;
case 3:
set .view,771;
goto do;
case 4:
set .view,774;
goto do;
case 5:
set .view,770;
goto do;
case 6:
set .view,776;
goto do;
case 7:
set .view,777;
goto do;
case 8:
set .view,781;
goto do;
case 9:
set .view,782;
goto do;
case 10:
set .view,783;
goto do;
case 11:
set .view,784;
goto do;
case 12:
set .view,785;
goto do;
case 13:
set .view,786;
goto do;
case 14:
set .view,787;
goto do;
case 15:
set .view,788;
goto do;
case 16:
close;
}
sunn:
switch(select("Синие","Зелёные","Чёрные","Розовые","Фиолетовые","Белые","Нет, я передумал")){
case 1:
set .view,590;
goto do;
case 2:
set .view,591;
goto do;
case 3:
set .view,593;
goto do;
case 4:
set .view,594;
goto do;
case 5:
set .view,595;
goto do;
case 6:
set .view,596;
goto do;
case 7:
close;
}
}
do:
switch(getiteminfo(.id,5))
{
case 256:
case 257:
case 769:
case 768:
set .slot,4;
break;
case 512:
case 513:
set .slot,5;
break;
case 1:
set .slot,3;
break;
}
query_sql("SELECT `item_id` FROM `change_sprite` WHERE `account_id` = '"+getcharid(3)+"' AND `item_id` = '"+.id+"'",.item_id);
if(.item_id)
query_sql("UPDATE `change_sprite` SET `view_id` = '"+.view+"' WHERE `account_id` = '"+getcharid(3)+"' AND `item_id` = '"+.id+"'");
else
query_sql("INSERT INTO change_sprite (`account_id`,`item_id`,`view_id`) VALUES ('"+getcharid(3)+"','"+.id+"','"+.view+"')");
if(isequipped(.id))
setlook .slot,.view;
close;
}
function script change {
switch(getarg(1,0))
{
case 0:
query_sql("SELECT `view_id` FROM `change_sprite` WHERE `account_id` = '"+getcharid(3)+"' AND `item_id` = '"+getarg(0)+"'",.@view);
if(.@view)
return .@view;
else
return getiteminfo(getarg(0),11);
case 1:
switch(getiteminfo(getarg(0),5))
{
case 256:
case 257:
case 769:
case 768:
set .@slot,4;
break;
case 512:
case 513:
set .@slot,5;
break;
case 1:
set .@slot,3;
break;
}
return .@slot;
}
}
CREATE TABLE IF NOT EXISTS `change_sprite` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`account_id` int(11) unsigned NOT NULL,
`item_id` int(11) unsigned NOT NULL,
`view_id` int(4) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=25 ;
Автор: GreatMan: Дата: 03.25.2011
Цитата Гробовщик;36427:
А не легче сделать просто замену предмета, то бишь удаляешь один, даешь другой, с нужным цветом?
Автор: Cole McCormick: Дата: 03.25.2011
См пример, слот карты.
Автор: GreatMan: Дата: 03.26.2011
Цитата Naota;36735:
См пример, слот карты.
Автор: GreatMan: Дата: 03.28.2011
Ну ребят выручите пож( Неужели никто незнает в чём трабла??*
Автор: Tori: Дата: 03.29.2011
http://rus-ea.ru/showthread.php?t=1539&highlight=%F1%EB%EE%F2+%EA%E0%F0%F2%FB
Автор: GreatMan: Дата: 03.29.2011
Цитата Tori;37224][url]http://rus-ea.ru/showthread.php?t=1539&highlight=%F1%EB%EE%F2+%EA%E0%F0%F2%FB[/url:
Автор: Renegade: Дата: 03.29.2011
в какой нафик базе данных.
Все спрайты у игрока в клиенте.
Неужели так хочется изобрести свой собственный велосипед с квадратными колёмами?
Всегда удивлялся таким людям.
Автор: S2pidsMan: Дата: 03.29.2011
Определенные цвета не сохраняются, или все?
Автор: Renegade: Дата: 03.29.2011
почему нельзя раскопировать шмотку с разными спрайтами?
зелёная мегашапка - id 99990
синяя мегашапка - id 99991
чёрная мегашапка - id 99992
при "перекраске" забираем одну, даём другую.
Автор: GreatMan: Дата: 03.29.2011
Цитата Renegade;37280:
почему нельзя раскопировать шмотку с разными спрайтами?
зелёная мегашапка - id 99990
синяя мегашапка - id 99991
чёрная мегашапка - id 99992
при "перекраске" забираем одну, даём другую.
Автор: Renegade: Дата: 03.29.2011
почему в этом случае нельзя безконечно красить?
если есть 99990 или 99991 или 99992 то > диалог "покраски", не?
Автор: GreatMan: Дата: 03.29.2011
Смотри у ках 50 покрасок и сам посчитай сколько комбинаций надо чтобы их перекрасить + пропадают карты когда красиш таким способом
Автор: Гробовщик: Дата: 03.29.2011
Цитата Renegade;37291:
почему в этом случае нельзя безконечно красить?
если есть 99990 или 99991 или 99992 то > диалог "покраски", не?
Автор: Кеник: Дата: 03.29.2011
Отображения то один хер добавляешь, не?) setlook откуда-то же берет картингу?
Автор: GreatMan: Дата: 03.29.2011
Цитата Кеник;37318:
Отображения то один хер добавляешь, не?) setlook откуда-то же берет картингу?
Автор: Кеник: Дата: 03.29.2011
Что мешает переносить заточку?
Автор: Gremlin: Дата: 03.29.2011
кривые руки :D
Автор: Кеник: Дата: 03.29.2011
* getequiprefinerycnt;
Returns the current number of plusses for the item in the specified equipment
slot. For a list of equipment slots see 'getequipid'.
Can be used to check if you have reached a maximum refine value, default for
this is +10:
if(getequiprefinerycnt(1) < 10) goto L_Refine_HeadGear;
mes "Sorry, it's not possible to refine hats better than +10";
close;
L_Refine_HeadGear:
mes "I will now upgrade your "+getequipname(1);
Автор: GreatMan: Дата: 03.29.2011
Ну а как решаить проблему с перекраской ках у меня их штук 30 я непойму как можно сделать компактно... Чтобы можно было их безконца перекрашивать...
Автор: Кеник: Дата: 03.29.2011
Запомнил заточку, сетлуком выбрал цвет, который подходит и заменил. Удалил старую шапку - дал новую, в зависимости от выбранного цвета..
Автор: GreatMan: Дата: 03.29.2011
Цитата Кеник;37350:
Запомнил заточку, сетлуком выбрал цвет, который подходит и заменил. Удалил старую шапку - дал новую, в зависимости от выбранного цвета..
Автор: Кеник: Дата: 03.29.2011
Замену шмотки сделать отдельной функцией и как параметр передавать нужные цифры. То бишь после выбора вызывается функция с параметром выбранной шапки, а дальше функция уже проверяет наличие и заточку.
Автор: GreatMan: Дата: 03.29.2011
Цитата Кеник;37353:
Замену шмотки сделать отдельной функцией и как параметр передавать нужные цифры. То бишь после выбора вызывается функция с параметром выбранной шапки, а дальше функция уже проверяет наличие и заточку.
Автор: Кеник: Дата: 03.29.2011
setarray @lkh[0],708,709,710;
setarray @lkhid[0],2074,2075,2076;
set @i,0;
set @last,getequipid(1);
while ( @i<3 ) {
setlook 4,@lkh[@i];
mes "Нравится?";
if (select("Да","Нет")==1) callsub "do",@lkhid[@i];
mes "Следующую?";
if (select("Да","Нет")==2) goto exit;
set @i,@i+1;
}
exit:
close;
do:
if (getequipid(1)==@last) {
set @tochka,getequiprefinerycnt(getequipid(1));
delitem @last,1;
getitem2 getartg(0),1,@tochka,1,0,0,0,0,0;
mes "Ну типа вот..";
close;
} else {
mes "Куда дел? Оо";
close;
}
end;
Автор: GreatMan: Дата: 03.29.2011
Ошибочки исправил добавил проверку на карты и всё тру спасиб)
Автор: Кеник: Дата: 03.30.2011
кнопочку жми :D
Автор: GreatMan: Дата: 03.30.2011
Как бы ещё проверочку в начале покмпактней на наличие вещи а то у меня такая фигня
if (getequipid(EQI_HEAD_TOP) == 5013) || (getequipid(EQI_HEAD_TOP) == 23020) || (getequipid(EQI_HEAD_TOP) == 23021) || (getequipid(EQI_HEAD_TOP) == 23022) || (getequipid(EQI_HEAD_TOP) == 23023) || (getequipid(EQI_HEAD_TOP) == 23024) || (getequipid(EQI_HEAD_TOP) == 23074) {
setarray @lkh[0],708,709,710;
setarray @lkhid[0],2074,2075,2076;