Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Спасибо, будем иметь введуПри продаже нескольких товаров используйте запятые. 100000 = 100,000
пипл и так хаваетя хз о чем автор, но этого явно не хватает лучу. Который ток вчера сделал пост, о том как они во всех мелочах делают хорошо. за год могли уже добавить запятые при вводе цен на товары. и баги открытия диалоговых окон с нпц 2 года исправить не могут. особенно смешно, когда вместо окна открывается багнувшийся его html код.
Спасибо, будем иметь введуПри продаже нескольких товаров используйте запятые. 100000 = 100,000
Peter
Спасибо, будем иметь введу
Ну тебе надо дирзай всего то надо сделать переводчик из запятых в ровное число для базы который любой школьник чит энгином заставит переводить так как ему надо...
class MultiSellWnd extends UICommonAPI;Ну тебе надо дирзай всего то надо сделать переводчик из запятых в ровное число для базы который любой школьник чит энгином заставит переводить так как ему надо...
Если тебе надо чисто отображение попробуй добавить.class MultiSellWnd extends UICommonAPI;
const MULTISELLWND_DIALOG_OK = 1122;
struct NeededItem
{
var int ID;
var string Name;
var int Count;
var string IconName;
var int Enchant;
var int CrystalType;
var int ItemType;
var int RefineryOp1;
var int RefineryOp2;
};
struct ItemList
{
var int MultiSellType;
var int NeededItemNum;
var Array<ItemInfo> ItemInfoList;
var Array<NeededItem> NeededItemList;
};
var Array<ItemList> m_itemLIst;
var int m_shopID;
var int pre_itemList;
function OnLoad()
{
RegisterEvent( EV_MultiSellShopID );
RegisterEvent( EV_MultiSellItemList );
RegisterEvent( EV_MultiSellNeededItemList );
RegisterEvent( EV_MultiSellItemListEnd );
RegisterEvent( EV_DialogOK );
pre_itemList = -1;
}
function OnEvent( int Event_ID, string param )
{
switch ( Event_ID )
{
case EV_MultiSellShopID:
HandleShopID( param );
break;
case EV_MultiSellItemList:
HandleItemList( param );
break;
case EV_MultiSellNeededItemList:
HandleNeededItemList( param );
break;
case EV_MultiSellItemListEnd:
HandleItemListEnd( param );
break;
case EV_DialogOK:
HandleDialogOK();
break;
default:
break;
};
}
function OnShow()
{
class'UIAPI_EDITBOX'.static.Clear("MultiSellWnd.ItemCountEdit");
}
function OnHide()
{
}
function OnClickButton( string ControlName )
{
switch ( ControlName )
{
case "OKButton":
HandleOKButton();
break;
case "CancelButton":
Clear();
HideWindow("MultiSellWnd");
break;
}
}
function OnClickItem( string strID, int index ) // ItemWindow
{
local int i;
local string param;
class'UIAPI_MULTISELLITEMINFO'.static.Clear("MultiSellWnd.ItemInfo");
class'UIAPI_MULTISELLNEEDEDITEM'.static.Clear("MultiSellWnd.NeededItem");
if ( strID == "ItemList" )
{
if ( index >= 0 && index < m_itemList.Length )
{
for ( i = 0;i < m_itemList[index].NeededItemList.Length;++i )
{
param = "";
ParamAdd( param, "Name", m_itemList[index].NeededItemList.Name );
ParamAdd( param, "ID", string(m_itemList[index].NeededItemList.ID ));
ParamAdd( param, "Num", string(m_itemList[index].NeededItemList.Count ));
ParamAdd( param, "Icon", m_itemList[index].NeededItemList.IconName );
ParamAdd( param, "Enchant", string(m_itemList[index].NeededItemList.Enchant) );
ParamAdd( param, "CrystalType", string(m_itemList[index].NeededItemList.CrystalType) );
ParamAdd( param, "ItemType", string(m_itemList[index].NeededItemList.ItemType) );
class'UIAPI_MULTISELLNEEDEDITEM'.static.AddData("MultiSellWnd.NeededItem", param);
}
for ( i = 0;i < m_itemList[index].NeededItemNum;++i )
class'UIAPI_MULTISELLITEMINFO'.static.SetItemInfo("MultiSellWnd.ItemInfo", i, m_itemList[index].ItemInfoList );
class'UIAPI_EDITBOX'.static.Clear("MultiSellWnd.ItemCountEdit");
if ( m_itemList[index].MultiSellType == 0 )
{
class'UIAPI_EDITBOX'.static.SetString("MultiSellWnd.ItemCountEdit", "1");
class'UIAPI_WINDOW'.static.DisableWindow("MultiSellWnd.ItemCountEdit");
}
else if ( m_itemList[index].MultiSellType == 1 )
{
class'UIAPI_EDITBOX'.static.SetString("MultiSellWnd.ItemCountEdit", "1");
class'UIAPI_WINDOW'.static.EnableWindow("MultiSellWnd.ItemCountEdit");
}
if ( pre_itemList != index )
{
if ( DialogIsMine() )
DialogHide();
}
}
}
}
function HandleShopID( string param )
{
Clear();
ParseInt( param, "shopID", m_shopID );
}
function Clear()
{
m_itemList.Length = 0;
class'UIAPI_MULTISELLITEMINFO'.static.Clear("MultiSellWnd.ItemInfo");
class'UIAPI_MULTISELLNEEDEDITEM'.static.Clear("MultiSellWnd.NeededItem");
class'UIAPI_ITEMWINDOW'.static.Clear("MultiSellWnd.ItemList");
}
function HandleItemList( string param )
{
local ItemInfo info;
local int index, type, i, classID;
local bool bMatchFound;
ParseInt( param, "classID", classID );
class'UIDATA_ITEM'.static.GetItemInfo( classID, info );
info.ClassID = classID;
ParseInt( param, "index", index );
ParseInt( param, "type", type );
ParseInt( param, "ID", info.Reserved );
ParseInt( param, "slotBitType", info.SlotBitType );
ParseInt( param, "itemType", info.ItemType );
ParseInt( param, "itemCount", info.ItemNum );
ParseInt( param, "OutputRefineryOp1", info.RefineryOp1 );
ParseInt( param, "OutputRefineryOp2", info.RefineryOp2 );
// 100% Durability
if ( 0 < info.Durability )
info.CurrentDurability = info.Durability;
if ( index == 0 )
{
i = m_itemList.Length;
m_itemList.Length = i + 1;
m_itemList.MultiSellType = type;
m_itemList.NeededItemNum = 1;
m_itemList.ItemInfoList.Length = index + 1;
m_itemList.ItemInfoList[index] = info;
}
else if ( index > 0 )
{
bMatchFound = False;
// Find matching item with ID
for ( i = m_itemList.Length - 1; i >= 0 ;--i )
{
if ( m_itemList.ItemInfoList[0].Reserved == info.Reserved
&& m_itemList.ItemInfoList[0].RefineryOp1 == info.RefineryOp1
&& m_itemList.ItemInfoList[0].RefineryOp2 == info.RefineryOp2 )
{
bMatchFound = True;
break;
}
}
if ( bMatchFound )
{
if ( m_itemList.ItemInfoList.Length <= index )
m_itemList.ItemInfoList.Length = index + 1;
m_itemList.MultiSellType = type;
m_itemList.ItemInfoList[index] = info;
++m_ItemList[I].NeededItemNum;
}
}
}
function HandleNeededItemList( string param )
{
local NeededItem item;
local int i, ID, index, RefineryOp1, RefineryOp2 ;
ParseInt( param, "ID", ID );
ParseInt( param, "refineryOp1", RefineryOp1 );
ParseInt( param, "refineryOp2", RefineryOp2 );
ParseInt( param, "ClassID", item.ID );
ParseInt( param, "count", item.Count );
ParseInt( param, "enchant", item.Enchant );
ParseInt( param, "inputRefineryOp1", item.RefineryOp1 );
ParseInt( param, "inputRefineryOp2", item.RefineryOp2 );
if ( item.ID == -100 )
{
item.Name = GetSystemString(1277);
item.IconName = "icon.etc_i.etc_pccafe_point_i00";
item.Enchant = 0;
item.ItemType = -1;
item.ID = 0;
}
else if ( item.ID == -200 )
{
item.Name = GetSystemString(1311);
item.IconName = "icon.etc_i.etc_bloodpledge_point_i00";
item.Enchant = 0;
item.ItemType = -1;
item.ID = 0;
}
else
{
item.Name = class'UIDATA_ITEM'.static.GetItemName( item.ID );
item.IconName = class'UIDATA_ITEM'.static.GetItemTextureName( item.ID );
}
// Add Item Info
for ( i = m_itemList.Length - 1; i >= 0 ;--i )
{
if ( m_itemList[I].ItemInfoList[0].Reserved == ID && m_itemList[I].ItemInfoList[0].RefineryOp1 == RefineryOp1 && m_itemList[I].ItemInfoList[0].RefineryOp2 == RefineryOp2 ) // match found
{
index = m_itemList[I].NeededItemList.Length;
m_itemList[I].NeededItemList.Length = index + 1;
item.ItemType = class'UIDATA_ITEM'.static.GetItemDataType( item.ID );
item.CrystalType = class'UIDATA_ITEM'.static.GetItemCrystalType( item.ID );
m_itemList[I].NeededItemList[index] = item;
break;
}
}
}
function HandleItemListEnd( string param )
{
local WindowHandle m_inventoryWnd;
m_inventoryWnd = GetHandle( "InventoryWnd" );
if ( m_inventoryWnd.IsShowWindow() )
m_inventoryWnd.HideWindow();
ShowWindow("MultiSellWnd");
class'UIAPI_WINDOW'.static.SetFocus("MultiSellWnd");
ShowItemList();
}
function ShowItemList()
{
local ItemInfo info;
local int i;
for ( i = 0;i < m_itemList.Length;++i )
{
info = m_itemList[I].ItemInfoList[0];
class'UIAPI_ITEMWINDOW'.static.AddItem( "MultiSellWnd.ItemList", info );
}
}
function HandleOKButton()
{
local int selectedIndex, itemNum;
selectedIndex = class'UIAPI_ITEMWINDOW'.static.GetSelectedNum("MultiSellWnd.ItemList");
itemNum = int(class'UIAPI_EDITBOX'.static.GetString("MultiSellWnd.ItemCountEdit"));
if ( selectedIndex >= 0 )
{
DialogSetReservedInt( selectedIndex );
DialogSetReservedInt2( itemNum );
DialogSetID( MULTISELLWND_DIALOG_OK );
DialogShow(DIALOG_Warning, GetSystemMessage(1383));
pre_itemList = selectedIndex;
}
}
function HandleDialogOK()
{
local string param;
local int SelectedIndex;
if ( DialogIsMine() )
{
SelectedIndex = DialogGetReservedInt();
ParamAdd( param, "ShopID", string(m_shopID) );
ParamAdd( param, "ItemID", string( m_itemList[SelectedIndex].ItemInfoList[0].Reserved ) );
ParamAdd( param, "RefineryOp1", string( m_itemList[SelectedIndex].ItemInfoList[0].RefineryOp1 ) );
ParamAdd( param, "RefineryOp2", string( m_itemList[SelectedIndex].ItemInfoList[0].RefineryOp2 ) );
ParamAdd( param, "ItemCount", string(DialogGetReservedInt2()) );
RequestMultiSellChoose( param );
}
}
defaultproperties
{
} как?[/I][/I][/I][/I][/I][/I][/I][/I]
function string FormatNumber(int Amount)
{
local string S, Out;
local int i;
S = string(Amount);
Out = "";
for (i = 0; i < Len(S); i++)
{
if (i > 0 && (Len(S) - i) % 3 == 0)
Out $= ","; //если хочешь поменяй на пробел.
Out $= Mid(S, i, 1);
}
return Out;
}
// Было:
ParamAdd( param, "Num", string(m_itemList[index].NeededItemList[i].Count ));
// Стало:
ParamAdd( param, "Num", FormatNumber(m_itemList[index].NeededItemList[i].Count) );
Попробуй так
function string FormatNumber(int n)
{
local string s, res, char, comma;
local int i;
s = string(n);
res = "";
comma = ",";
for (i = 0; i < Len(s); i++)
{
if (i > 0 && (i % 3) == 0)
{
res = comma $ res;
}
char = Mid(s, Len(s) - 1 - i, 1);
res = char $ res;
}
return res;
}
Посмотреть вложение 9463215000000 = 15
function string FormatNumber(int n)
{
local string sCount, sResult, sChar, sComma;
local int i, nLen;
sCount = string(n);
nLen = Len(sCount);
sResult = "";
sComma = ",";
for (i = 0; i < nLen; i++)
{
sChar = Mid(sCount, i, 1);
sResult = sResult $ sChar;
if (i < (nLen - 1))
{
if (((nLen - 1 - i) % 3) == 0)
{
sResult = sResult $ sComma;
}
}
}
return sResult;
}
Тогда без правки DLL не получится верни всё назад. Разрабы тысячи миллионы не просто так в разные цвета покрасили.Всё осталось по-прежнему 15.
Что будет представлять собой DLL-файл?
Сообщение объединено:Знаете ли вы какой-нибудь удобный русский интерфейс + компилятор?
Да ему скорее всего нужно что бы ценники за товары были с запятой, ну то есть обернуть условный price в MakeCostString(price)Насколько я помню, в xdat можно выбрать нужные настройки отображения с запятой без и тп.
Попробуй выбрать NUMBER или то что тебе нужно из списка.
Посмотреть вложение 94634