br87

Нпс магазин

7 сообщений в этой теме

Подскажите пожалуйста как сделать "НПС магазин" только продажа в мнем не за зени, а зад монеты или любые другие итемы.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

prontera,115,175,6	script	Dynamic Shop	437,{
mes .name$;
mes "You currently have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
mes "Would you like to look at the shop?";
next;
if(select("Yes:No") == 2) {
close;
}
close2;
callshop "dy_shop",1;
npcshopattach "dy_shop";
dispbottom "You currently have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
end;

OnBuyItem:
for(set @i,0; @i < getarraysize(@bought_nameid); set @i,@i+1) {
for(set @j,0; @j < getarraysize(.ItemNeededS); set @j,@j+2) {
if(.ItemNeededS[@j] == @bought_nameid[@i]) {
set @itemcost,(.ItemNeededS[(@j+1)]*@bought_quantity[@i]);
set @totalcost,(@[email protected]);
break;
}
}
}
if(@totalcost > countitem(.ItemNeeded)) {
message strcharinfo(0), "You don't have enough "+getitemname(.ItemNeeded)+"";
end;

}
else {
for(set @i,0; @i < getarraysize(@bought_nameid); set @i,@i+1) {
getitem @bought_nameid[@i],@bought_quantity[@i];
}
delitem .ItemNeeded,@totalcost;
dispbottom "Thank you for shopping.";
dispbottom "You now have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
}
set @totalcost,0;
deletearray @bought_nameid[0],128;
deletearray @bought_quantity[0],128;
end;

OnInit:
npcshopdelitem "dy_shop",909; // Leave this alone
set .name$,"[Dynamic Shop]";
set .ItemNeeded,7227;
setarray .ItemNeededS[0],607,1,608,2,512,3,7539,1;


for(set [email protected],0; [email protected] < getarraysize(.ItemNeededS); set [email protected],[email protected]+2) {
npcshopadditem "dy_shop",.ItemNeededS[[email protected]],.ItemNeededS[([email protected]+1)];
}
}

- shop dy_shop 139,909:1

Редактируем shop list здесь

setarray .ItemNeededS[0],607,1,608,2,512,3,7539,1;
//setarray .ItemNeededS[0],<Item 1>,<Amount>,<Item 2>,<Amount>.....;

Редактируем вещь которая нам нужна для покупки вещей здесь.

set .ItemNeeded,7539;

Меняете айди 7539 на айди которое вам нужно

Источник

4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

prontera,115,175,6	script	Dynamic Shop	437,{
mes .name$;
mes "You currently have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
mes "Would you like to look at the shop?";
next;
if(select("Yes:No") == 2) {
close;
}
close2;
callshop "dy_shop",1;
npcshopattach "dy_shop";
dispbottom "You currently have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
end;

OnBuyItem:
for(set @i,0; @i < getarraysize(@bought_nameid); set @i,@i+1) {
for(set @j,0; @j < getarraysize(.ItemNeededS); set @j,@j+2) {
if(.ItemNeededS[@j] == @bought_nameid[@i]) {
set @itemcost,(.ItemNeededS[(@j+1)]*@bought_quantity[@i]);
set @totalcost,(@[email protected]);
break;
}
}
}
if(@totalcost > countitem(.ItemNeeded)) {
message strcharinfo(0), "You don't have enough "+getitemname(.ItemNeeded)+"";
end;

}
else {
for(set @i,0; @i < getarraysize(@bought_nameid); set @i,@i+1) {
getitem @bought_nameid[@i],@bought_quantity[@i];
}
delitem .ItemNeeded,@totalcost;
dispbottom "Thank you for shopping.";
dispbottom "You now have "+countitem(.ItemNeeded)+" "+getitemname(.ItemNeeded)+".";
}
set @totalcost,0;
deletearray @bought_nameid[0],128;
deletearray @bought_quantity[0],128;
end;

OnInit:
npcshopdelitem "dy_shop",909; // Leave this alone
set .name$,"[Dynamic Shop]";
set .ItemNeeded,7227;
setarray .ItemNeededS[0],607,1,608,2,512,3,7539,1;


for(set [email protected],0; [email protected] < getarraysize(.ItemNeededS); set [email protected],[email protected]+2) {
npcshopadditem "dy_shop",.ItemNeededS[[email protected]],.ItemNeededS[([email protected]+1)];
}
}

- shop dy_shop 139,909:1

Редактируем shop list здесь

setarray .ItemNeededS[0],607,1,608,2,512,3,7539,1;
//setarray .ItemNeededS[0],<Item 1>,<Amount>,<Item 2>,<Amount>.....;

Редактируем вещь которая нам нужна для покупки вещей здесь.

set .ItemNeeded,7539;

Меняете айди 7539 на айди которое вам нужно

Источник

Хмм интересно установил я это Dynamic Shop. И не понимаю для чего это строчка:

-	shop	dy_shop	139,909:1

Мап сервер ругается:

[Warning]: npc_parse_shop: Item Jellopy [909] discounted buying price (1->0) is

less than overcharged selling price (3->3) at file 'npc/custom/homero/shop.txt',

line '94'.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

МАП сервер какбы намекает что цена продажи не соответствует цене покупки, то есть сравни цены и учти что можно покупать со скидкой.

Изменено пользователем PhoeniX
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

МАП сервер какбы намекает что цена продажи не соответствует цене покупки, то есть сравни цены и учти что можно покупать со скидкой.

ностальгия) помнится на моем первом сервере я такую цену поставил. ребята wpe-шили с прибылью в 100 зен себе хорошие деньги)

Изменено пользователем Sanasol
помниться =)
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

нпц базарит, и всё. магазин не открывает..... что может быть?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


// Settings :
// - Only required to edit the ShopSetting() Function
// Notes : You may also add / remove Menu ( If any )
// - Shop Currency can be either ItemID or Variable Name, but must write within Quotation Marks ( "" )
// Ex. of Variable. -> Zeny , #CASHPOINTS , #KAFRAPOINTS , CustomVariable , #CustomVariable
// - ERROR Message are used to show Invalid Settings in your NPC.


// Leave this alone...
- shop Emistry_Shop -1,512:100


job_star,29,31,5 script Берёзка 751,{
function ShopSettings;
function ValidateCost;
function CurrencyInfo;
function ClearData;
function ValueConvert;
function ErrorNotice;

mes "Магазины за разные Валюты^000000.";
mes "^00FF00____________________________^000000";
mes "За что будем покупать";
next;
// Menu Selection
select("Магазин за PoD","Магазин за TCG Card","Магазин за VB","Магазин за кешпоинты");

ClearData();
ShopSettings( @menu );
npcshopitem "Emistry_Shop",512,100;
npcshopdelitem "Emistry_Shop",512;
for(set [email protected],0; [email protected] < getarraysize( @ItemLists ); set [email protected],[email protected]+1)
npcshopadditem "Emistry_Shop",@ItemLists[[email protected]],@ItemCost[[email protected]];
mes "Выбирайте товар";
mes "^00FF00____________________________^000000";
CurrencyInfo( @Currency$ );
mes "^00FF00____________________________^000000";
callshop "Emistry_Shop",1;
npcshopattach "Emistry_Shop";
end;


function ShopSettings {
switch( getarg(0) ){
Case 1:
// Currency [ Item ID / Variable Name ]
set @Currency$,"7179";
// Item ID Lists
setarray @ItemLists[0],2306,7227;
// Item Price
setarray @ItemCost[0],1,1;
break;
Case 2:
// Currency [ Item ID / Variable Name ]
set @Currency$,"7227";
// Item ID Lists
setarray @ItemLists[0],20166,20167,20168,20169,20170,20171;
// Item Price
setarray @ItemCost[0],20,20,20,20,20,20;
break;
Case 3:
// Currency [ Item ID / Variable Name ]
set @Currency$,"7829";
// Item ID Lists
setarray @ItemLists[0],20166,20167,20168,20169,20170,20171;
// Item Price
setarray @ItemCost[0],20,20,20,20,20,20;
break;
Case 4:
// Currency [ Item ID / Variable Name ]
set @Currency$,"#CASHPOINTS";
// Item ID Lists
setarray @ItemLists[0],2306,2302,2303,2304,2305,2301;
// Item Price
setarray @ItemCost[0],20,22,34,445,52,641;
break;
// Case 4,5,6.....etc...
default:
ErrorNotice( "Invalid Menu Selection for Menu "[email protected]+"." );
close;
}


if( @Currency$ == "" )
ErrorNotice( "Invalid Currency Setting in Menu "[email protected]+" ." );
if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) )
ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "[email protected]+" ." );
return;
}

function ErrorNotice {
mes "^FF0000Ошибка^000000 - "+getarg(0);
mes "^00FF00____________________________^000000";
mes "Inform this Message to ^0000FFGame Staffs^000000 immediately !";
close;
}

function CurrencyInfo {
if( getitemname( atoi( getarg(0) ) ) != "null" ){
mes "Валюта : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000";
mes "у вас есть : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000 валюты";
}else if( getitemname( atoi( getarg(0) ) ) == "null" ){
mes "Variable Currency : ^FF0000"+getarg(0)+"^000000";
mes "Available Amount : ^0000FF"+ValueConvert( getd( getarg(0) ) )+"^000000";
}
return;
}

function ValidateCost {
if( getitemname( atoi( getarg(0) ) ) != "null" ){
if( countitem( atoi( getarg(0) ) ) < getarg(1) ) return 1;
}else{
if( getd( getarg(0) ) < getarg(1) ) return 1;
}
return 0;
}

function ClearData {
set @Currency$,"";
set @TotalCost,0;
deletearray @bought_nameid[0],getarraysize( @bought_nameid );
deletearray @bought_quantity[0],getarraysize( @bought_quantity );
deletearray @ItemLists[0],getarraysize( @ItemLists );
deletearray @ItemCost[0],getarraysize( @ItemCost );
return;
}

function ValueConvert {
set [email protected], atoi(""+getarg(0));
if ( [email protected] == 0 || [email protected] >= 2147483647 ) return getarg(0);
set [email protected], getstrlen(""[email protected]);
for ( set [email protected],0; [email protected] < [email protected]; set [email protected], [email protected] + 1 ) {
set [email protected]$, [email protected] % pow(10,[email protected]+1) / pow(10,[email protected]) + [email protected]$;
if ( ([email protected]+1) % 3 == 0 && [email protected]+1 != [email protected] ) set [email protected]$, ","+ [email protected]$;
}
return [email protected]$;
}

OnBuyItem:
ShopSettings( @menu );
for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
for(set @j,0; @j < getarraysize( @ItemLists ); set @j,@j+1)
if( @ItemLists[@j] == @bought_nameid[@i] )
set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] );
mes "^FF0000 ЛИСТ ПОКУПОК^000000";
mes "^00FF00____________________________^000000";
for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 )
mes "^FF0000"[email protected]_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000";
mes "^00FF00____________________________^000000";

if( getitemname( atoi( @Currency$ ) ) != "null" )
mes "Вам нужно оплатить : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000";
else if( getitemname( atoi( @Currency$ ) ) == "null" ){
mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" "[email protected]$+"^000000";
}

mes "^00FF00____________________________^000000";
if( ValidateCost( @Currency$,@TotalCost ) ){
if( getitemname( atoi( @Currency$ ) ) != "null" )
mes "[ ^FF0000X^000000 ]У Вас недостаточно ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000";
else{
mes "[ ^FF0000X^000000 ] У Вас недостаточно ^0000FF"[email protected]$+"^000000";
}
}else{
if( select( "^0000FFКупить^000000:Cancel" ) == 1 ){
if( getitemname( atoi( @Currency$ ) ) != "null" )
delitem atoi( @Currency$ ),@TotalCost;
else{
set getd( @Currency$ ),getd( @Currency$ ) - @TotalCost;
}
for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
getitem @bought_nameid[@i],@bought_quantity[@i];
message strcharinfo(0),"Пуплено "+getarraysize( @bought_nameid )+" вещей.";
mes "Спасибо за покупку.";
}
}
ClearData();
close;

}

Вот другой магазин!

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас