Item* Item::CloneItem(uint32 count, Player const* player) const { Item* newItem = CreateItem(GetEntry(), count, player); if (!newItem) return NULL; newItem->SetUInt32Value(ITEM_FIELD_CREATOR, GetUInt32Value(ITEM_FIELD_CREATOR)); newItem->SetUInt32Value(ITEM_FIELD_GIFTCREATOR, GetUInt32Value(ITEM_FIELD_GIFTCREATOR)); newItem->SetUInt32Value(ITEM_FIELD_FLAGS, GetUInt32Value(ITEM_FIELD_FLAGS)); newItem->SetUInt32Value(ITEM_FIELD_DURATION, GetUInt32Value(ITEM_FIELD_DURATION)); // player CAN be NULL in which case we must not update random properties because that accesses player's item update queue if (player) newItem->SetItemRandomProperties(GetItemRandomPropertyId()); return newItem; }
int wxListBox::DoInsertItems(const wxArrayStringsAdapter & items, unsigned int pos, void **clientData, wxClientDataType type) { LONG lIndexType = 0; bool incrementPos = false; if (IsSorted()) lIndexType = LIT_SORTASCENDING; else if (pos == GetCount()) lIndexType = LIT_END; else { lIndexType = (LONG)pos; incrementPos = true; } int n = wxNOT_FOUND; unsigned int count = items.GetCount(); for (unsigned int i = 0; i < count; i++) { n = (int)::WinSendMsg(GetHwnd(), LM_INSERTITEM, (MPARAM)lIndexType, (MPARAM)items[i].wx_str()); if (n < 0) { wxLogLastError(wxT("WinSendMsg(LM_INSERTITEM)")); n = wxNOT_FOUND; break; } ++m_nNumItems; #if wxUSE_OWNER_DRAWN if (HasFlag(wxLB_OWNERDRAW)) { wxOwnerDrawn* pNewItem = CreateItem(n); // dummy argument pNewItem->SetFont(GetFont()); m_aItems.Insert(pNewItem, n); } #endif AssignNewItemClientData(n, clientData, i, type); if (incrementPos) ++lIndexType; } return n; } // end of wxListBox::DoInsertAppendItemsWithData
CAnimationItem& CAnimationEngine::CreateItemAfter( POSITION pos ) { CAnimationItem& itemFrom = m_listItems.GetAt( pos ); CAnimationItem& itemRef = CreateItem( itemFrom.m_csText ); itemRef.m_csText = itemFrom.m_csText; itemRef.SetPoint( itemFrom.m_ptFinish ); itemRef.SetTextColor( itemFrom.m_rgbTextColor ); itemRef.m_pFont = itemFrom.m_pFont; itemRef.m_nEffects |= (itemFrom.m_nEffects & (CAnimationItem::AF_AlignCenter|CAnimationItem::AF_AlignRight)); itemRef.GoAfter( pos ); itemRef.m_pBitmap = itemFrom.m_pBitmap; itemRef.m_nFirstPic = itemFrom.m_nFirstPic; itemRef.m_nLastPic = itemFrom.m_nLastPic; return itemRef; }
void CUIMpTradeWnd::CreateHelperItems (xr_vector<shared_str>& ammo_types) { for ( xr_vector<shared_str>::iterator it = ammo_types.begin(); it != ammo_types.end(); ++it ) { const shared_str& ammo_name = *it; if ( !m_store_hierarchy->FindItem (ammo_name) ) { continue; } SBuyItemInfo* ammo_item = CreateItem(ammo_name, SBuyItemInfo::e_undefined, false); ammo_item->m_cell_item->SetIsHelper (true); TryToBuyItem (ammo_item, bf_normal, NULL); } }
SBuyItemInfo* CUIMpTradeWnd::DetachAddon(SBuyItemInfo* itm, item_addon_type at) { VERIFY (IsAddonAttached(itm,at)); CInventoryItem* item_ = (CInventoryItem*)itm->m_cell_item->m_pData; CWeapon* w = smart_cast<CWeapon*>(item_); R_ASSERT (w); u8 curr_addon_state = w->GetAddonsState(); curr_addon_state &= ~at; shared_str addon_name_sect = GetAddonNameSect(itm, at); w->SetAddonsState (curr_addon_state); SBuyItemInfo* detached_addon = CreateItem(addon_name_sect, SBuyItemInfo::e_own, false); return detached_addon; }
CDSObject *CDSObject::CreatePlaylistItem ( QString sId, QString sTitle, QString sParentId, CDSObject *pObject ) { if (pObject == nullptr) { pObject = new CDSObject( sId, sTitle, sParentId ); pObject->m_sClass = "object.item.playlistItem"; } CreateItem( sId, sTitle, sParentId, pObject ); pObject->AddProperty( new Property( "artist" , "upnp" )); pObject->AddProperty( new Property( "genre" , "upnp" )); pObject->AddProperty( new Property( "longDescription", "upnp" )); pObject->AddProperty( new Property( "storageMedium" , "upnp" )); pObject->AddProperty( new Property( "description" , "dc" )); pObject->AddProperty( new Property( "language" , "dc" )); return( pObject ); }
CDSObject *CDSObject::CreateImageItem( QString sId, QString sTitle, QString sParentId, CDSObject *pObject ) { if (pObject == NULL) { pObject = new CDSObject( sId, sTitle, sParentId ); pObject->m_sClass = "object.item.imageItem"; } CreateItem( sId, sTitle, sParentId, pObject ); pObject->AddProperty( new Property( "longDescription", "upnp" )); pObject->AddProperty( new Property( "storageMedium" , "upnp" )); pObject->AddProperty( new Property( "rating" , "upnp" )); pObject->AddProperty( new Property( "description" , "dc" )); pObject->AddProperty( new Property( "publisher" , "dc" )); pObject->AddProperty( new Property( "date" , "dc" )); pObject->AddProperty( new Property( "rights" , "dc" )); return( pObject ); }
CDSObject *CDSObject::CreateAudioItem( QString sId, QString sTitle, QString sParentId, CDSObject *pObject ) { if (pObject == NULL) { pObject = new CDSObject( sId, sTitle, sParentId ); pObject->m_sClass = "object.item.audioItem"; } CreateItem( sId, sTitle, sParentId, pObject ); pObject->AddProperty( new Property( "genre" , "upnp" )); pObject->AddProperty( new Property( "description" , "dc" )); pObject->AddProperty( new Property( "longDescription" , "upnp" )); pObject->AddProperty( new Property( "publisher" , "dc" )); pObject->AddProperty( new Property( "language" , "dc" )); pObject->AddProperty( new Property( "relation" , "dc" )); pObject->AddProperty( new Property( "rights" , "dc" )); return( pObject ); }
void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData) { MacSetRedraw( false ) ; Clear() ; int n = choices.GetCount(); for( int i = 0 ; i < n ; ++i ) { if ( clientData ) { #if wxUSE_OWNER_DRAWN wxASSERT_MSG(clientData[i] == NULL, wxT("Can't use client data with owner-drawn listboxes")); #else // !wxUSE_OWNER_DRAWN Append( choices[i] , clientData[i] ) ; #endif } else Append( choices[i] ) ; } #if wxUSE_OWNER_DRAWN if ( m_windowStyle & wxLB_OWNERDRAW ) { // first delete old items unsigned int ui = m_aItems.Count(); while ( ui-- != 0 ) { delete m_aItems[ui]; m_aItems[ui] = NULL; } m_aItems.Empty(); // then create new ones for ( ui = 0; ui < m_noItems; ui++ ) { wxOwnerDrawn *pNewItem = CreateItem(ui); pNewItem->SetName(choices[ui]); m_aItems.Add(pNewItem); } } #endif // wxUSE_OWNER_DRAWN MacSetRedraw( true ) ; }
void ToggleAttachment( GUI_BUTTON *btn, INT32 reason ) { if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { INT32 i; UINT16 usAttachment; OBJECTTYPE temp; for( i = 0; i < NUM_ATTACHMENT_BUTTONS; i++ ) { //Loop through and find the button that was just modified switch( i ) { case 0: usAttachment = SILENCER; break; case 1: usAttachment = SNIPERSCOPE; break; case 2: usAttachment = LASERSCOPE; break; case 3: usAttachment = BIPOD; break; case 4: usAttachment = DUCKBILL; break; case 5: usAttachment = UNDER_GLAUNCHER; break; } if( guiAttachmentButton[ i ] != -1 && btn == ButtonList[ guiAttachmentButton[ i ] ] ) { //Found it, now check the state of the button. if( !gfAttachment[ i ] ) { gfAttachment[ i ] = TRUE; btn->uiFlags |= BUTTON_CLICKED_ON; CreateItem( usAttachment, gpItem->bGunStatus, &temp ); AttachObject( NULL, gpItem, &temp ); } else { //Button is out, so remove the attachment INT8 slot; gfAttachment[ i ] = FALSE; btn->uiFlags &= ~BUTTON_CLICKED_ON; slot = FindAttachment( gpItem, usAttachment ); if( slot != -1 ) RemoveAttachment( gpItem, slot, &temp ); } } } ReEvaluateAttachmentStatii(); } }
gemItem *EntityManager::MoveItemToWorld(psItem *chrItem, InstanceID instance, psSectorInfo *sectorinfo, float loc_x, float loc_y, float loc_z, float loc_yrot, psCharacter *owner, bool transient) { chrItem->SetLocationInWorld(instance,sectorinfo,loc_x,loc_y,loc_z,loc_yrot); chrItem->UpdateInventoryStatus(NULL,0,PSCHARACTER_SLOT_NONE); gemItem *obj = CreateItem(chrItem,true); if (!obj) { return NULL; } chrItem->Save(false); return obj; }
void Account::handleGotChanges (const QList<DriveChanges>& driveChanges) { QList<Change> changes; for (const auto& driveChange : driveChanges) { //TODO setting for shared files if (driveChange.FileResource_.PermissionRole_ != DriveItem::Roles::Owner) continue; Change change; change.Deleted_ = driveChange.Deleted_; change.ID_ = driveChange.Id_.toUtf8 (); change.ItemID_ = driveChange.FileId_.toUtf8 (); if (!change.Deleted_) change.Item_ = CreateItem (driveChange.FileResource_); changes << change; } emit gotChanges (changes); }
bool CUIMpTradeWnd::OnItemLButtonClick(CUICellItem* itm) { CUIDragDropListEx* owner_list = itm->OwnerList(); SBuyItemInfo* iinfo = FindItem(itm); if ( !CanBuyOrSellInList(owner_list) ) { return false; } const shared_str& buy_item_name = iinfo->m_name_sect; SBuyItemInfo* pitem = CreateItem(buy_item_name, SBuyItemInfo::e_undefined, false); bool b_res = TryToBuyItem(pitem, bf_normal, NULL ); if( !b_res ) { DestroyItem (pitem); } return true; }
void CUIBagWnd::FillUpGroup(const u32 group) { string64 tmp_str; for (u32 j = 0; j < m_wpnSectStorage[group].size(); ++j) { const shared_str& sect = m_wpnSectStorage[group][j]; int count = g_mp_restrictions.GetItemCount( m_wpnSectStorage[group][j] ); for (int i = 0; i < count; i++) { // Create item CUICellItem* itm = CreateItem(sect); // Set custom draw itoa (j+1, tmp_str ,10); CBuyItemCustomDrawCell* p = xr_new<CBuyItemCustomDrawCell>(tmp_str,UI()->Font()->pFontLetterica16Russian); itm->SetCustomDraw (p); // Set Number itm->m_index = m_allItems.size(); // item info m_allItems.push_back (itm); ItmInfo ii; ii.price = pSettings->r_s32(m_sectionPrice, m_wpnSectStorage[group][j].c_str()); m_info.push_back (ii); // m_info[itm->m_index].short_cut = u32(j + 1 % 10); m_info[itm->m_index].active = true; m_info[itm->m_index].bought = false; m_info[itm->m_index].section = group; m_info[itm->m_index].pos_in_section = j; m_info[itm->m_index].external = false; PutItemToGroup (itm, group); } } }
CUICellItem* CUIBagWnd::CreateNewItem(const u8 grpNum, u8 uIndexInSlot) { u32 sz = m_allItems.size(); VERIFY (sz); CUICellItem* item; PIItem iitem = NULL; CUICellItem* new_item; for (u32 i = 0; i < sz; i++){ item = m_allItems[i]; if (m_info[item->m_index].pos_in_section == uIndexInSlot && m_info[item->m_index].section == grpNum ) { iitem = (PIItem)item->m_pData; break; } } R_ASSERT (iitem); new_item = CreateItem(iitem->object().cNameSect()); new_item->m_index = m_allItems.size(); m_allItems.push_back (new_item); ItmInfo ii; ii.price = pSettings->r_s32(*m_sectionPrice, m_wpnSectStorage[grpNum][uIndexInSlot].c_str()); m_info.push_back (ii); m_info[new_item->m_index].short_cut = NULL; m_info[new_item->m_index].active = true; m_info[new_item->m_index].bought = false; m_info[new_item->m_index].section = grpNum; m_info[new_item->m_index].pos_in_section = uIndexInSlot; m_info[new_item->m_index].external = false; PutItemToGroup (new_item, grpNum); return new_item; }
void ToggleCeramicPlates( GUI_BUTTON *btn, INT32 reason ) { if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { OBJECTTYPE temp; gfCeramicPlates ^= TRUE; if( gfCeramicPlates ) { btn->uiFlags |= BUTTON_CLICKED_ON; CreateItem( CERAMIC_PLATES, gpItem->bStatus[0], &temp ); AttachObject( NULL, gpItem, &temp ); } else { INT8 slot; btn->uiFlags &= ~BUTTON_CLICKED_ON; slot = FindAttachment( gpItem, CERAMIC_PLATES ); if( slot != -1 ) RemoveAttachment( gpItem, slot, &temp ); } } }
void HandleScriptEffect(SpellEffIndex effIndex) { if (Unit* unitTarget = GetHitUnit()) { uint32 rank = 0; // Improved Healthstone if (AuraEffect const* aurEff = unitTarget->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, 284, 0)) { switch (aurEff->GetId()) { case WARLOCK_IMPROVED_HEALTHSTONE_R1: rank = 1; break; case WARLOCK_IMPROVED_HEALTHSTONE_R2: rank = 2; break; default: sLog->outError("Unknown rank of Improved Healthstone id: %d", aurEff->GetId()); break; } } uint8 spellRank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); if (spellRank > 0 && spellRank <= 8) CreateItem(effIndex, iTypes[spellRank - 1][rank]); } }
void ToggleDetonator( GUI_BUTTON *btn, INT32 reason ) { if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { OBJECTTYPE temp; if( !gfDetonator ) { gfDetonator = TRUE; btn->uiFlags |= BUTTON_CLICKED_ON; CreateItem( DETONATOR, gpItem->bStatus[0], &temp ); AttachObject( NULL, gpItem, &temp ); } else { //Button is out, so remove the attachment INT8 slot; gfDetonator = FALSE; btn->uiFlags &= ~BUTTON_CLICKED_ON; slot = FindAttachment( gpItem, DETONATOR ); if( slot != -1 ) RemoveAttachment( gpItem, slot, &temp ); } } }
void CreateObject(Map *map) { int i; InitEnemy(); InitItem(); InitBomb(); InitEffect(); for (i = 0; i < map->objectNum; i++) { float x = (float)map->object[i].x * BLOCK_WIDTH; float y = (float)map->object[i].y * BLOCK_HEIGHT; char type = map->object[i].type; int r; if (type == PLAYER) { InitPlayer(x, y); } r = CreateEnemy(type, x, y); if (r) { continue; } CreateItem(type, x, y); } MoveMap(map); }
// on "init" you need to initialize your instance bool ChooseMan::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //±³¾°¾«Áé auto bg1 = Sprite::create("choose_bg.jpg"); //ΪÊÊÓ¦ÆÁÄ»½øÐÐËõ·Å bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); CreateItem(); return true; }
CDSObject *CDSObject::CreateTextItem( QString sId, QString sTitle, QString sParentId, CDSObject *pObject ) { if (pObject == nullptr) { pObject = new CDSObject( sId, sTitle, sParentId ); pObject->m_sClass = "object.item.textItem"; } CreateItem( sId, sTitle, sParentId, pObject ); pObject->AddProperty( new Property( "author" , "upnp" )); pObject->AddProperty( new Property( "protection" , "upnp" )); pObject->AddProperty( new Property( "longDescription", "upnp" )); pObject->AddProperty( new Property( "storageMedium" , "upnp" )); pObject->AddProperty( new Property( "rating" , "upnp" )); pObject->AddProperty( new Property( "description" , "dc" )); pObject->AddProperty( new Property( "publisher" , "dc" )); pObject->AddProperty( new Property( "contributor" , "dc" )); pObject->AddProperty( new Property( "relation" , "dc" )); pObject->AddProperty( new Property( "language" , "dc" )); pObject->AddProperty( new Property( "rights" , "dc" )); return( pObject ); }
void CPicketMan::SetInjured(CEntity* _other) { m_IsCheckCollision = false; CreateItem(); m_IsLife = false; }
void Account::handleGotNewItem (const DBoxItem& item) { const auto& storageItem = CreateItem (item); emit gotNewItem (storageItem, storageItem.ParentID_); emit listingUpdated (storageItem.ParentID_); }
Acad::ErrorStatus CGraphListCtrl::InsertItem( IN int nItem, IN AcDbObject* pEnt, IN LPCTSTR szTitleName /*= _T("")*/, DWORD dwData ) { CGraphBlockViewWnd* pItem = CreateItem(pEnt); return InsertItem(nItem, pItem, szTitleName, dwData); }
void LoadItemList() { PROFILE_FUNC(); memset(g_pItemList,0,sizeof(g_pItemList)); memset(g_pDropList,0,sizeof(g_pDropList)); const int8* Query = "SELECT " "b.itemId," // 0 "b.name," // 1 "b.stackSize," // 2 "b.flags," // 3 "b.aH," // 4 "b.BaseSell," // 5 "b.subid," // 6 "u.validTargets," // 7 "u.activation," // 8 "u.animation," // 9 "u.animationTime," // 10 "u.maxCharges," // 11 "u.useDelay," // 12 "u.reuseDelay," // 13 "u.aoe," // 14 "a.level," // 15 "a.jobs," // 16 "a.MId," // 17 "a.shieldSize," // 18 "a.scriptType," // 19 "a.slot," // 20 "a.rslot," // 21 "w.skill," // 22 "w.subskill," // 23 "w.delay," // 24 "w.dmg," // 25 "w.dmgType," // 26 "w.hit," // 27 "w.unlock_index," // 28 "f.storage," // 29 "f.moghancement," // 30 "f.element," // 31 "f.aura," // 32 "p.slot," // 33 "p.element " // 34 "FROM item_basic AS b " "LEFT JOIN item_usable AS u USING (itemId) " "LEFT JOIN item_armor AS a USING (itemId) " "LEFT JOIN item_weapon AS w USING (itemId) " "LEFT JOIN item_furnishing AS f USING (itemId) " "LEFT JOIN item_puppet AS p USING (itemId) " "WHERE itemId < %u;"; int32 ret = Sql_Query(SqlHandle, Query, MAX_ITEMID); if( ret != SQL_ERROR && Sql_NumRows(SqlHandle) != 0) { while(Sql_NextRow(SqlHandle) == SQL_SUCCESS) { CItem* PItem = CreateItem(Sql_GetUIntData(SqlHandle,0)); if(PItem != NULL) { PItem->setName(Sql_GetData(SqlHandle,1)); PItem->setStackSize(Sql_GetUIntData(SqlHandle,2)); PItem->setFlag(Sql_GetUIntData(SqlHandle,3)); PItem->setAHCat(Sql_GetUIntData(SqlHandle,4)); PItem->setBasePrice(Sql_GetUIntData(SqlHandle,5)); PItem->setSubID(Sql_GetUIntData(SqlHandle,6)); if (PItem->isType(ITEM_GENERAL)) { } if (PItem->isType(ITEM_USABLE)) { ((CItemUsable*)PItem)->setValidTarget(Sql_GetUIntData(SqlHandle,7)); ((CItemUsable*)PItem)->setActivationTime(Sql_GetUIntData(SqlHandle,8)*1000); ((CItemUsable*)PItem)->setAnimationID(Sql_GetUIntData(SqlHandle,9)); ((CItemUsable*)PItem)->setAnimationTime(Sql_GetUIntData(SqlHandle,10)*1000); ((CItemUsable*)PItem)->setMaxCharges(Sql_GetUIntData(SqlHandle,11)); ((CItemUsable*)PItem)->setCurrentCharges(Sql_GetUIntData(SqlHandle,11)); ((CItemUsable*)PItem)->setUseDelay(Sql_GetUIntData(SqlHandle,12)); ((CItemUsable*)PItem)->setReuseDelay(Sql_GetUIntData(SqlHandle,13)); ((CItemUsable*)PItem)->setAoE(Sql_GetUIntData(SqlHandle,14)); } if (PItem->isType(ITEM_PUPPET)) { ((CItemPuppet*)PItem)->setEquipSlot(Sql_GetUIntData(SqlHandle,33)); ((CItemPuppet*)PItem)->setElementSlots(Sql_GetUIntData(SqlHandle,34)); } if (PItem->isType(ITEM_ARMOR)) { ((CItemArmor*)PItem)->setReqLvl(Sql_GetUIntData(SqlHandle,15)); ((CItemArmor*)PItem)->setJobs(Sql_GetUIntData(SqlHandle,16)); ((CItemArmor*)PItem)->setModelId(Sql_GetUIntData(SqlHandle,17)); ((CItemArmor*)PItem)->setShieldSize(Sql_GetUIntData(SqlHandle,18)); ((CItemArmor*)PItem)->setScriptType(Sql_GetUIntData(SqlHandle,19)); ((CItemArmor*)PItem)->setEquipSlotId(Sql_GetUIntData(SqlHandle,20)); ((CItemArmor*)PItem)->setRemoveSlotId(Sql_GetUIntData(SqlHandle,21)); if (((CItemArmor*)PItem)->getValidTarget() != 0) { ((CItemArmor*)PItem)->setSubType(ITEM_CHARGED); } } if (PItem->isType(ITEM_WEAPON)) { ((CItemWeapon*)PItem)->setSkillType(Sql_GetUIntData(SqlHandle,22)); ((CItemWeapon*)PItem)->setSubSkillType(Sql_GetUIntData(SqlHandle,23)); ((CItemWeapon*)PItem)->setDelay((Sql_GetIntData(SqlHandle,24)*1000)/60); ((CItemWeapon*)PItem)->setDamage(Sql_GetUIntData(SqlHandle,25)); ((CItemWeapon*)PItem)->setDmgType(Sql_GetUIntData(SqlHandle,26)); ((CItemWeapon*)PItem)->setMaxHit(Sql_GetUIntData(SqlHandle,27)); ((CItemWeapon*)PItem)->setUnlockable(Sql_GetUIntData(SqlHandle,28)); } if (PItem->isType(ITEM_FURNISHING)) { ((CItemFurnishing*)PItem)->setStorage(Sql_GetUIntData(SqlHandle,29)); ((CItemFurnishing*)PItem)->setMoghancement(Sql_GetUIntData(SqlHandle,30)); ((CItemFurnishing*)PItem)->setElement(Sql_GetUIntData(SqlHandle,31)); ((CItemFurnishing*)PItem)->setAura(Sql_GetUIntData(SqlHandle,32)); } g_pItemList[PItem->getID()] = PItem; } } } ret = Sql_Query(SqlHandle,"SELECT itemId, modId, value FROM item_mods WHERE itemId IN (SELECT itemId FROM item_basic LEFT JOIN item_armor USING (itemId))"); if( ret != SQL_ERROR && Sql_NumRows(SqlHandle) != 0) { while(Sql_NextRow(SqlHandle) == SQL_SUCCESS) { uint16 ItemID = (uint16)Sql_GetUIntData(SqlHandle,0); uint16 modID = (uint16)Sql_GetUIntData(SqlHandle,1); int16 value = (int16) Sql_GetIntData (SqlHandle,2); if ((g_pItemList[ItemID] != NULL) && g_pItemList[ItemID]->isType(ITEM_ARMOR)) { ((CItemArmor*)g_pItemList[ItemID])->addModifier(new CModifier(modID,value)); } } } ret = Sql_Query(SqlHandle,"SELECT itemId, modId, value, latentId, latentParam FROM item_latents WHERE itemId IN (SELECT itemId FROM item_basic LEFT JOIN item_armor USING (itemId))"); if( ret != SQL_ERROR && Sql_NumRows(SqlHandle) != 0) { while(Sql_NextRow(SqlHandle) == SQL_SUCCESS) { uint16 ItemID = (uint16)Sql_GetUIntData(SqlHandle,0); uint16 modID = (uint16)Sql_GetUIntData(SqlHandle,1); int16 value = (int16) Sql_GetIntData (SqlHandle,2); uint16 latentId = (uint16) Sql_GetIntData(SqlHandle,3); uint16 latentParam = (uint16) Sql_GetIntData(SqlHandle,4); if ((g_pItemList[ItemID] != NULL) && g_pItemList[ItemID]->isType(ITEM_ARMOR)) { ((CItemArmor*)g_pItemList[ItemID])->addLatent(new CLatentEffect((LATENT)latentId, latentParam, 0, modID, value)); } } } }
void CGUIItem::Serialize( IArchive &ar ) { if(ar.IsReading()) { CHashString versionName; static DWORD msgHash_GetFileVersion = CHashString(_T("GetFileVersion")).GetUniqueID(); DWORD retval = EngineGetToolBox()->SendMessage(msgHash_GetFileVersion, sizeof(IHashString), &versionName); static DWORD Vers2_0a = CHashString(_T("2.0a")).GetUniqueID(); static DWORD Vers2_0b = CHashString(_T("2.0b")).GetUniqueID(); static DWORD Vers2_0c = CHashString(_T("2.0c")).GetUniqueID(); int verNum = 0; if (versionName.GetUniqueID() == Vers2_0a) { verNum = 3; } else if (versionName.GetUniqueID() == Vers2_0b) { verNum = 4; } else if (versionName.GetUniqueID() == Vers2_0c) { verNum = 5; } else { m_ToolBox->Log(LOGERROR, _T("Bad GUI file version!")); assert(0); return; } float loadVersion = 0.0f; if (verNum >= 4) { ar.Read(loadVersion); if (loadVersion == 0.0f) { // initial serialize from editor; set to save version (up to date schema) loadVersion = m_fSaveVersion; } } ar.Read(m_szNorm); ar.Read(m_szHigh); ar.Read(m_szSelect); ar.Read(m_szGrayed); ar.Read(m_szDecalNorm); ar.Read(m_szDecalHigh); ar.Read(m_szDecalSelect); ar.Read(m_szDecalGrayed); ar.Read(m_fDecalOffsetX); ar.Read(m_fDecalOffsetY); ar.Read(m_szText); ar.Read(m_szTextHigh); ar.Read(m_szTextSelect); ar.Read(m_szTextGrayed); ar.Read(m_szFont); ar.Read(m_szFontBold); ar.Read(m_iFontsize); ar.Read(m_iNormFontColor); ar.Read(m_iHighFontColor); ar.Read(m_iSelFontColor); ar.Read(m_iGrayFontColor); ar.Read(m_iTextOffSetX); ar.Read(m_iTextOffSetY); ar.Read(m_bCenterText); ar.Read(m_bSmartScale); CreateItem(); } else { ar.Write(m_fSaveVersion, _T("Version")); ar.Write(m_szNorm, _T("NormTexture")); ar.Write(m_szHigh, _T("HighTexture")); ar.Write(m_szSelect, _T("SelectTexture")); ar.Write(m_szGrayed, _T("GrayTexture")); ar.Write(m_szDecalNorm, _T("NormDecalTexture")); ar.Write(m_szDecalHigh, _T("HighDecalTexture")); ar.Write(m_szDecalSelect, _T("SelectDecalTexture")); ar.Write(m_szDecalGrayed, _T("GrayDecalTexture")); ar.Write(m_fDecalOffsetX, _T("DecalOffsetX")); ar.Write(m_fDecalOffsetY, _T("DecalOffsetY")); ar.Write(m_szText, _T("StaticText")); ar.Write(m_szTextHigh, _T("StaticTextHigh")); ar.Write(m_szTextSelect, _T("StaticTextSelect")); ar.Write(m_szTextGrayed, _T("StaticTextGrayed")); ar.Write(m_szFont, _T("FontName")); ar.Write(m_szFontBold, _T("BoldFontName")); ar.Write(m_iFontsize, _T("Fontsize")); ar.Write(m_iNormFontColor, _T("NormFontColor")); ar.Write(m_iHighFontColor, _T("HighFontColor")); ar.Write(m_iSelFontColor, _T("SelFontColor")); ar.Write(m_iGrayFontColor, _T("GrayFontColor")); ar.Write(m_iTextOffSetX, _T("TextOffSetX")); ar.Write(m_iTextOffSetY, _T("TextOffSetY")); ar.Write(m_bCenterText, _T("CenterText")); ar.Write(m_bSmartScale, _T("SmartScale")); } }
void HourlyLarryUpdate( void ) { SOLDIERTYPE * pSoldier; INT8 bSlot, bBoozeSlot; INT8 bLarryItemLoop; UINT16 usTemptation = 0; UINT16 usCashAmount; BOOLEAN fBar = FALSE; pSoldier = FindSoldierByProfileID( LARRY_NORMAL, TRUE ); if ( !pSoldier ) { pSoldier = FindSoldierByProfileID( LARRY_DRUNK, TRUE ); } if ( pSoldier ) { if ( pSoldier->bAssignment >= ON_DUTY ) { return; } if ( pSoldier->fBetweenSectors ) { return; } if ( pSoldier->bActive && pSoldier->bInSector && (gTacticalStatus.fEnemyInSector || guiCurrentScreen == GAME_SCREEN ) ) { return; } // look for items in Larry's inventory to maybe use for ( bLarryItemLoop = 0; bLarryItemLoop < NUM_LARRY_ITEMS; bLarryItemLoop++ ) { bSlot = FindObj( pSoldier, LarryItems[ bLarryItemLoop ][ 0 ] ); if ( bSlot != NO_SLOT ) { usTemptation = LarryItems[ bLarryItemLoop ][ 1 ]; break; } } // check to see if we're in a bar sector, if we are, we have access to alcohol // which may be better than anything we've got... if ( usTemptation < BAR_TEMPTATION && GetCurrentBalance() >= Item[ ALCOHOL ].usPrice ) { if ( pSoldier->bSectorZ == 0 && ( ( pSoldier->sSectorX == 13 && pSoldier->sSectorY == MAP_ROW_B) || ( pSoldier->sSectorX == 13 && pSoldier->sSectorY == MAP_ROW_C) || ( pSoldier->sSectorX == 5 && pSoldier->sSectorY == MAP_ROW_C) || ( pSoldier->sSectorX == 6 && pSoldier->sSectorY == MAP_ROW_C) || ( pSoldier->sSectorX == 5 && pSoldier->sSectorY == MAP_ROW_D) || ( pSoldier->sSectorX == 2 && pSoldier->sSectorY == MAP_ROW_H) ) ) { // in a bar! fBar = TRUE; usTemptation = BAR_TEMPTATION; } } if ( usTemptation > 0 ) { if ( pSoldier->ubProfile == LARRY_NORMAL ) { gMercProfiles[ LARRY_NORMAL ].bNPCData += (INT8) Random( usTemptation ); if ( gMercProfiles[ LARRY_NORMAL ].bNPCData >= LARRY_FALLS_OFF_WAGON ) { if ( fBar ) { // take $ from player's account usCashAmount = Item[ ALCOHOL ].usPrice; AddTransactionToPlayersBook ( TRANSFER_FUNDS_TO_MERC, pSoldier->ubProfile, GetWorldTotalMin() , -( usCashAmount ) ); // give Larry some booze and set slot etc values appropriately bBoozeSlot = FindEmptySlotWithin( pSoldier, HANDPOS, SMALLPOCK8POS ); if ( bBoozeSlot != NO_SLOT ) { // give Larry booze here CreateItem( ALCOHOL, 100, &(pSoldier->inv[bBoozeSlot]) ); } bSlot = bBoozeSlot; bLarryItemLoop = 1; } // ahhhh!!! SwapLarrysProfiles( pSoldier ); if ( bSlot != NO_SLOT ) { UseKitPoints( &(pSoldier->inv[ bSlot ]), LarryItems[ bLarryItemLoop ][ 2 ], pSoldier ); } } } else { // NB store all drunkenness info in LARRY_NORMAL profile (to use same values) // so long as he keeps consuming, keep number above level at which he cracked gMercProfiles[ LARRY_NORMAL ].bNPCData = __max( gMercProfiles[ LARRY_NORMAL ].bNPCData, LARRY_FALLS_OFF_WAGON ); gMercProfiles[ LARRY_NORMAL ].bNPCData += (INT8) Random( usTemptation ); // allow value to keep going up to 24 (about 2 days since we subtract Random( 2 ) when he has no access ) gMercProfiles[ LARRY_NORMAL ].bNPCData = __min( gMercProfiles[ LARRY_NORMAL ].bNPCData, 24 ); if ( fBar ) { // take $ from player's account usCashAmount = Item[ ALCOHOL ].usPrice; AddTransactionToPlayersBook ( TRANSFER_FUNDS_TO_MERC, pSoldier->ubProfile, GetWorldTotalMin() , -( usCashAmount ) ); // give Larry some booze and set slot etc values appropriately bBoozeSlot = FindEmptySlotWithin( pSoldier, HANDPOS, SMALLPOCK8POS ); if ( bBoozeSlot != NO_SLOT ) { // give Larry booze here CreateItem( ALCOHOL, 100, &(pSoldier->inv[bBoozeSlot]) ); } bSlot = bBoozeSlot; bLarryItemLoop = 1; } if ( bSlot != NO_SLOT ) { // ahhhh!!! UseKitPoints( &(pSoldier->inv[ bSlot ]), LarryItems[ bLarryItemLoop ][ 2 ], pSoldier ); } } } else if ( pSoldier->ubProfile == LARRY_DRUNK ) { gMercProfiles[ LARRY_NORMAL ].bNPCData -= (INT8) Random( 2 ); if ( gMercProfiles[ LARRY_NORMAL ].bNPCData <= 0 ) { // goes sober! SwapLarrysProfiles( pSoldier ); } } } }
void AddSelectedItemToWorld( INT32 sGridNo ) { OBJECTTYPE *pObject; INVTYPE *pItem; ITEM_POOL *pItemPool; INT32 iItemIndex; INT8 bVisibility = INVISIBLE; BOOLEAN fFound = FALSE; IPListNode *pIPCurr, *pIPPrev; UINT16 usFlags; //Extract the currently selected item. SpecifyItemToEdit( NULL, -1 ); if( eInfo.uiItemType == TBAR_MODE_ITEM_KEYS ) { CreateKeyObject( &gTempObject, 1, (UINT8)eInfo.sSelItemIndex ); } else { CreateItem( eInfo.pusItemIndex[eInfo.sSelItemIndex], 100, &gTempObject ); } usFlags = 0; switch( gTempObject.usItem ) { case MINE: if ( bVisibility == BURIED ) { usFlags |= WORLD_ITEM_ARMED_BOMB; } break; case MONEY: case SILVER: case GOLD: gTempObject[0]->data.objectStatus = 100; gTempObject[0]->data.money.uiMoneyAmount = 100 + Random( 19901 ); break; case OWNERSHIP: gTempObject[0]->data.owner.ubOwnerProfile = NO_PROFILE; bVisibility = BURIED; break; case SWITCH: if( TriggerAtGridNo( sGridNo ) ) { //Restricted to one action per gridno. return; } bVisibility = BURIED; gTempObject[0]->data.objectStatus = 100; gTempObject[0]->data.misc.ubBombOwner = 1; if( eInfo.sSelItemIndex < 2 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY; else if( eInfo.sSelItemIndex < 4 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY_2; else if( eInfo.sSelItemIndex < 6 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY_3; else gTempObject[0]->data.misc.bFrequency = (INT8)(FIRST_MAP_PLACED_FREQUENCY + (eInfo.sSelItemIndex-4) / 2); usFlags |= WORLD_ITEM_ARMED_BOMB; break; case ACTION_ITEM: bVisibility = BURIED; gTempObject[0]->data.objectStatus = 100; gTempObject[0]->data.misc.ubBombOwner = 1; gTempObject[0]->data.bTrap = gbDefaultBombTrapLevel; if( eInfo.sSelItemIndex < PRESSURE_ACTION_ID ) { gTempObject[0]->data.misc.bDetonatorType = BOMB_REMOTE; if( eInfo.sSelItemIndex < 2 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY; else if( eInfo.sSelItemIndex < 4 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY_2; else if( eInfo.sSelItemIndex < 6 ) gTempObject[0]->data.misc.bFrequency = PANIC_FREQUENCY_3; else gTempObject[0]->data.misc.bFrequency = (INT8)(FIRST_MAP_PLACED_FREQUENCY + (eInfo.sSelItemIndex-4) / 2); } else { gTempObject[0]->data.misc.bDetonatorType = BOMB_PRESSURE; gTempObject[0]->data.misc.bDelay = 0; } ChangeActionItem( &gTempObject, gbActionItemIndex ); gTempObject.fFlags |= OBJECT_ARMED_BOMB; if( gbActionItemIndex == ACTIONITEM_SMPIT ) Add3X3Pit( sGridNo ); else if( gbActionItemIndex == ACTIONITEM_LGPIT ) Add5X5Pit( sGridNo ); usFlags |= WORLD_ITEM_ARMED_BOMB; break; } pObject = InternalAddItemToPool( &sGridNo, &gTempObject, bVisibility, 0, usFlags, 0, -1, &iItemIndex ); if( gTempObject.usItem != OWNERSHIP ) { gWorldItems[ iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance); } else { gWorldItems[ iItemIndex ].ubNonExistChance = 0; } pItem = &( Item[ pObject->usItem ] ); if( pItem->usItemClass == IC_AMMO ) { if (Random( 2 )) { (*pObject)[0]->data.ubShotsLeft = Magazine[ pItem->ubClassIndex ].ubMagSize; } else { (*pObject)[0]->data.ubShotsLeft = (UINT8) Random( Magazine[ pItem->ubClassIndex ].ubMagSize ); } } else { if(gTempObject.usItem != OWNERSHIP)//dnl ch35 110909 (*pObject)[0]->data.objectStatus = (INT8)(70 + Random( 26 )); } if( pItem->usItemClass & IC_GUN ) { if ( pObject->usItem == ROCKET_LAUNCHER ) { (*pObject)[0]->data.gun.ubGunShotsLeft = 1; } else { (*pObject)[0]->data.gun.ubGunShotsLeft = (UINT8)(Random( Weapon[ pObject->usItem ].ubMagSize )); } } if( !GetItemPoolFromGround( sGridNo, &pItemPool ) ) Assert( 0 ); while( pItemPool ) { if( &(gWorldItems[ pItemPool->iItemIndex ].object) == pObject ) { fFound = TRUE; //ShowSelectedItem(); break; } pItemPool = pItemPool->pNext; } Assert( fFound ); gpItemPool = pItemPool; SpecifyItemToEdit( pObject, sGridNo ); //Get access to the itempool. //search for a current node in list containing same mapindex pIPCurr = pIPHead; pIPPrev = NULL; while( pIPCurr ) { pIPPrev = pIPCurr; if( pIPCurr->sGridNo == sGridNo ) { //found one, so we don't need to add it gpCurrItemPoolNode = pIPCurr; return; } pIPCurr = pIPCurr->next; } //there isn't one, so we will add it now. ShowItemCursor( sGridNo ); if( pIPPrev ) { pIPPrev->next = (IPListNode*)MemAlloc( sizeof( IPListNode ) ); Assert( pIPPrev->next ); pIPPrev = pIPPrev->next; pIPPrev->next = NULL; pIPPrev->sGridNo = sGridNo; gpCurrItemPoolNode = pIPPrev; } else { pIPHead = (IPListNode*)MemAlloc( sizeof( IPListNode ) ); Assert( pIPHead ); pIPHead->next = NULL; pIPHead->sGridNo = sGridNo; gpCurrItemPoolNode = pIPHead; } }
UINT8 HandleNonActivatedTossCursor( SOLDIERTYPE *pSoldier, UINT16 sGridNo, BOOLEAN fRecalc, UINT32 uiCursorFlags, UINT8 ubItemCursor ) { INT16 sFinalGridNo; static BOOLEAN fBadCTGH = FALSE; BOOLEAN fArmed = FALSE; INT8 bLevel; OBJECTTYPE TempObject; INT8 bSlot; OBJECTTYPE * pObj; INT8 bAttachPos; // Check for enough ammo... if ( ubItemCursor == TRAJECTORYCURS ) { fArmed = TRUE; if ( !EnoughAmmo( pSoldier, FALSE, HANDPOS ) ) { // Check if ANY ammo exists..... if ( FindAmmoToReload( pSoldier, HANDPOS, NO_SLOT ) == NO_SLOT ) { // OK, use BAD reload cursor..... return( BAD_RELOAD_UICURSOR ); } else { // Check APs to reload... gsCurrentActionPoints = GetAPsToAutoReload( pSoldier ); gfUIDisplayActionPoints = TRUE; //gUIDisplayActionPointsOffX = 14; //gUIDisplayActionPointsOffY = 7; // OK, use GOOD reload cursor..... return( GOOD_RELOAD_UICURSOR ); } } } // Add APs.... if ( gTacticalStatus.uiFlags & TURNBASED && ( gTacticalStatus.uiFlags & INCOMBAT ) ) { if ( ubItemCursor == TRAJECTORYCURS ) { gsCurrentActionPoints = CalcTotalAPsToAttack( pSoldier, sGridNo, TRUE, (INT8)(pSoldier->bShownAimTime / 2) ); } else { gsCurrentActionPoints = MinAPsToThrow( pSoldier, sGridNo, TRUE ); } gfUIDisplayActionPoints = TRUE; gfUIDisplayActionPointsCenter = TRUE; // If we don't have any points and we are at the first refine, do nothing but warn! if ( !EnoughPoints( pSoldier, gsCurrentActionPoints, 0 , FALSE ) ) { gfUIDisplayActionPointsInvalid = TRUE; } } // OK, if we begin to move, reset the cursor... if ( uiCursorFlags & MOUSE_MOVING ) { EndPhysicsTrajectoryUI( ); } gfUIHandlePhysicsTrajectory = TRUE; if ( fRecalc ) { // Calculate chance to throw here..... if ( sGridNo == pSoldier->sGridNo ) { fBadCTGH = FALSE; } else { // ATE: Find the object to use... memcpy( &TempObject, &(pSoldier->inv[ HANDPOS ] ), sizeof( OBJECTTYPE ) ); // Do we have a launcable? pObj = &(pSoldier->inv[HANDPOS]); for (bAttachPos = 0; bAttachPos < MAX_ATTACHMENTS; bAttachPos++) { if (pObj->usAttachItem[ bAttachPos ] != NOTHING) { if ( Item[ pObj->usAttachItem[ bAttachPos ] ].usItemClass & IC_EXPLOSV ) { break; } } } if (bAttachPos != MAX_ATTACHMENTS) { CreateItem( pObj->usAttachItem[ bAttachPos ], pObj->bAttachStatus[ bAttachPos ], &TempObject ); } if (pSoldier->bWeaponMode == WM_ATTACHED && FindAttachment( &(pSoldier->inv[HANDPOS]), UNDER_GLAUNCHER ) != NO_SLOT ) { bSlot = FindAttachment( &(pSoldier->inv[HANDPOS]), UNDER_GLAUNCHER ); if ( bSlot != NO_SLOT ) { CreateItem( UNDER_GLAUNCHER, pSoldier->inv[HANDPOS].bAttachStatus[ bSlot ], &TempObject ); if ( !CalculateLaunchItemChanceToGetThrough( pSoldier, &TempObject, sGridNo, (INT8)gsInterfaceLevel, (INT16)( gsInterfaceLevel * 256 ), &sFinalGridNo, fArmed, &bLevel, TRUE ) ) { fBadCTGH = TRUE; } else { fBadCTGH = FALSE; } BeginPhysicsTrajectoryUI( sFinalGridNo, bLevel, fBadCTGH ); } } else { if ( !CalculateLaunchItemChanceToGetThrough( pSoldier, &TempObject, sGridNo, (INT8)gsInterfaceLevel, (INT16)( gsInterfaceLevel * 256 ), &sFinalGridNo, fArmed, &bLevel, TRUE ) ) { fBadCTGH = TRUE; } else { fBadCTGH = FALSE; } BeginPhysicsTrajectoryUI( sFinalGridNo, bLevel, fBadCTGH ); } } } if ( fBadCTGH ) { return( BAD_THROW_UICURSOR ); } return( GOOD_THROW_UICURSOR ); }
void Exec_MSG_DropItem(int conn, char *pMsg) { MSG_DropItem *m = (MSG_DropItem*)pMsg; if (pMob[conn].MOB.CurrentScore.Hp <= 0 || pUser[conn].Mode != USER_PLAY) { AddCrackError(conn, 1, 14); SendHpMode(conn); return; } if (pUser[conn].Trade.OpponentID) { RemoveTrade(pUser[conn].Trade.OpponentID); RemoveTrade(conn); return; } if (pUser[conn].TradeMode) { SendClientMessage(conn, g_pMessageStringTable[_NN_CantWhenAutoTrade]); return; } if (m->GridX >= MAX_GRIDX || m->GridY >= MAX_GRIDY) { sprintf(temp, "err,wrong drop pos %d %d", m->GridX, m->GridY); Log(temp, pUser[conn].AccountName, pUser[conn].IP); return; } if (isDropItem == 0) return; int gridx = m->GridX; int gridy = m->GridY; int titem = GetEmptyItemGrid(&gridx, &gridy); m->GridX = gridx; m->GridY = gridy; if (titem == 0) { SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Drop_Here]); return; } if (m->SourType == ITEM_PLACE_EQUIP) { Log("err,dropitem - sourtype", pUser[conn].AccountName, pUser[conn].IP); return; } if (m->SourType) { if (m->SourType == ITEM_PLACE_CARRY) { if (m->SourPos < 0 || m->SourPos >= pMob[conn].MaxCarry) { Log("err,dropitem - carry equip", pUser[conn].AccountName, pUser[conn].IP); return; } } else { if (m->SourType != ITEM_PLACE_CARGO) { Log("err,dropitem - sourtype", pUser[conn].AccountName, pUser[conn].IP); return; } if (m->SourPos < 0 || m->SourPos >= MAX_CARGO) { Log("err,dropitem - sourpos cargo", pUser[conn].AccountName, pUser[conn].IP); return; } } } STRUCT_ITEM *SrcItem = GetItemPointer(&pMob[conn].MOB, pUser[conn].Cargo, m->SourType, m->SourPos); STRUCT_ITEM *BackupItem = GetItemPointer(&pMob[conn].MOB, pUser[conn].Cargo, m->SourType, m->SourPos); if (SrcItem == NULL || BackupItem == NULL) return; if (SrcItem->sIndex <= 0 || SrcItem->sIndex >= MAX_ITEMLIST) return; if (SrcItem->sIndex != 508 && SrcItem->sIndex != 509 && SrcItem->sIndex != 522 && (SrcItem->sIndex < 526 || SrcItem->sIndex > 537) && SrcItem->sIndex != 446 && SrcItem->sIndex != 747 && SrcItem->sIndex != 3993 && SrcItem->sIndex != 3994) { int drop = CreateItem(m->GridX, m->GridY, SrcItem, m->Rotate, 1); if (drop <= 0 || drop >= MAX_ITEM) { SendClientMessage(conn, "Can't create object(item)"); return; } char tmplog[2048]; BASE_GetItemCode(SrcItem, tmplog); sprintf(temp, "dropitem, %s", tmplog); ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP); memset(SrcItem, 0, sizeof(STRUCT_ITEM)); MSG_CNFDropItem sm_ditem; memset(&sm_ditem, 0, sizeof(MSG_CNFDropItem)); sm_ditem.Type = _MSG_CNFDropItem; sm_ditem.Size = sizeof(MSG_CNFDropItem); sm_ditem.SourType = m->SourType; sm_ditem.SourPos = m->SourPos; sm_ditem.Rotate = m->Rotate; sm_ditem.GridX = m->GridX; sm_ditem.GridY = m->GridY; pUser[conn].cSock.SendOneMessage((char*)&sm_ditem, sizeof(MSG_CNFDropItem)); } else { SendClientMessage(conn, g_pMessageStringTable[_NN_Guild_Medal_Cant_Be_Droped]); return; } }