void UAREquipmentComponent::ChangeItem(FARDragDropInfo ItemIn, int32 OldItemSlotID) { bool itemRemoved = false; if (GetOwnerRole() < ROLE_Authority) { ServerChangeItem(ItemIn, OldItemSlotID); } else { //check if there is something in that particular slot for (AARItem* eqItem : EquippedItems) { if (eqItem->ItemSlotEquipped == ItemIn.ItemSlot) { FARDragDropInfo tempItem; tempItem.ItemKey = eqItem->ItemID; tempItem.ItemSlot = eqItem->ItemSlotEquipped; //if there is, Unequip it. Before we proceed. UnEquipItem(ItemIn); itemRemoved = Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex); Inventory->AddItemToInventoryOnSlot(tempItem, OldItemSlotID); } } switch (ItemIn.DragDropSlot) { case EDragDropSlot::Chest: { if (ChangeChestItem(ItemIn)) { if (!itemRemoved) { Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex); break; } } break; } case EDragDropSlot::LeftHand: { AddWeapon(ItemIn, OldItemSlotID, 0); } case EDragDropSlot::RightHand: { AddWeapon(ItemIn, OldItemSlotID, 1); } default: break; } } }
void FPSPlayerComponent::_PickUpWeapon(dt::PhysicsBodyComponent* object) { Weapon* weapon = dynamic_cast<Weapon*>(object->GetNode()); if(weapon != nullptr) { AddWeapon(weapon); } }
void AShooterCharacter::SpawnDefaultInventory() { if (Role < ROLE_Authority) { return; } int32 NumWeaponClasses = DefaultInventoryClasses.Num(); for (int32 i = 0; i < NumWeaponClasses; i++) { if (DefaultInventoryClasses[i]) { FActorSpawnParameters SpawnInfo; SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; AWeapon* NewWeapon = GetWorld()->SpawnActor<AWeapon>(DefaultInventoryClasses[i], SpawnInfo); AddWeapon(NewWeapon); } } // equip first weapon in inventory if (Inventory.Num() > 0) { EquipWeapon(Inventory[0]); } }
void WeaponsMenu::RefreshWeaponList() { // reset number of weapon for (int i = 0; i < MAX_NUMBER_OF_WEAPON; i++) nb_weapon_type[i] = 0; weapons_menu->ResetTransformation(); tools_menu->ResetTransformation(); // Refreshing Weapons menu const std::vector<PolygonItem *>& weapons = weapons_menu->GetItem(); std::vector<PolygonItem *>::const_iterator item = weapons.begin(); for (; item != weapons.end(); item++) { delete (*item); } weapons_menu->ClearItem(false); // Tools menu const std::vector<PolygonItem *>& tools = tools_menu->GetItem(); item = tools.begin(); for (; item != tools.end(); item++) { delete (*item); } tools_menu->ClearItem(false); // Reinserting weapon WeaponsList * weapons_list = Game::GetInstance()->GetWeaponsList(); for (WeaponsList::iterator it=weapons_list->GetList().begin(); it != weapons_list->GetList().end(); ++it) AddWeapon(*it); }
void AAmethystCharacter::SpawnDefaultInventory() { if (Role < ROLE_Authority) { return; } // @hack to remove rocket launcher int32 NumWeaponClasses = DefaultInventoryClasses.Num(); for (int32 i = 0; i < NumWeaponClasses; i++) { if (DefaultInventoryClasses[i]) { FActorSpawnParameters SpawnInfo; SpawnInfo.bNoCollisionFail = true; AAmethystWeapon* NewWeapon = GetWorld()->SpawnActor<AAmethystWeapon>(DefaultInventoryClasses[i], SpawnInfo); AddWeapon(NewWeapon); } } // equip first weapon in inventory if (Inventory.Num() > 0) { EquipWeapon(Inventory[0]); } }
//========================================================= //========================================================= int CSatchel::AddToPlayer(CBasePlayer *pPlayer) { int bResult = CBasePlayerItem::AddToPlayer(pPlayer); pPlayer->pev->weapons |= (1 << m_iId); m_chargeReady = 0;// this satchel charge weapon now forgets that any satchels are deployed by it. if (bResult) return AddWeapon(); return FALSE; }
void Player::ResetWeaponMounts() { //now reset each mount u32 weapons = 0; m_WeaponSlots = 0; u32 i; for(i=0;i<(u32)WeaponTable[ClassIndex() * 7];i++) { AddWeapon(i+1); } for (i = 1; i <= PlayerIndex()->RPGInfo.GetHullUpgradeLevel(); i++) { if (WeaponTable[ClassIndex() * 7 + i] != 0) { AddWeapon(m_WeaponSlots + 1); } } }
static void LoadWeapons(CArray *weapons, json_t *weaponsNode) { if (!weaponsNode->child) { // enable all weapons AddWeapon(weapons, &gGunDescriptions.Guns); AddWeapon(weapons, &gGunDescriptions.CustomGuns); } else { for (json_t *child = weaponsNode->child; child; child = child->next) { const GunDescription *g = StrGunDescription(child->text); if (g == NULL) { continue; } CArrayPushBack(weapons, &g); } } }
void CMissionData::ReadFromMessage(ILTCSBase *pInterface, HMESSAGEREAD hMessage) { if (!hMessage) return; // Clear our data... Clear(); // Read in the new data... m_nMission = (int) pInterface->ReadFromMessageFloat(hMessage); m_nLevel = (int) pInterface->ReadFromMessageFloat(hMessage); int nSize = (int) pInterface->ReadFromMessageDWord(hMessage); int i; CWeaponData Weapon; for (i = 0; i < nSize; i++) { Weapon.ReadFromMessage(pInterface, hMessage); AddWeapon(Weapon.m_nID); } nSize = (int) pInterface->ReadFromMessageDWord(hMessage); CAmmoData Ammo; for (i = 0; i < nSize; i++) { Ammo.ReadFromMessage(pInterface, hMessage); AddAmmo(Ammo.m_nID, Ammo.m_nCount); } nSize = (int) pInterface->ReadFromMessageDWord(hMessage); CModData Mod; for (i = 0; i < nSize; i++) { Mod.ReadFromMessage(pInterface, hMessage); AddMod(Mod.m_nID); } nSize = (int) pInterface->ReadFromMessageDWord(hMessage); CGearData Gear; for (i = 0; i < nSize; i++) { Gear.ReadFromMessage(pInterface, hMessage); AddGear(Gear.m_nID); } }
//----------------------------------------------------------------------------- // Purpose: Collect any weapons inside our volume // Input : *pOther - //----------------------------------------------------------------------------- void CTriggerWeaponDissolve::StartTouch( CBaseEntity *pOther ) { BaseClass::StartTouch( pOther ); if ( PassesTriggerFilters( pOther ) == false ) return; CBaseCombatWeapon *pWeapon = dynamic_cast<CBaseCombatWeapon *>(pOther); if ( pWeapon == NULL ) return; AddWeapon( pWeapon ); }
Weapon* CreateWeapon(char* weaponName, char* weaponTexture, int weaponType, int weaponRarity, int collisionGroup, float width, float height) { Weapon *CurrentWeapon = AddWeapon(); Vec3 TextTint; int nameLen, statsLen; Vec3Set(&TextTint, 0, 0, 0); CurrentWeapon->WeaponFOF = PlayerWeapon; // Friend or Foe tag CurrentWeapon->objID = GetObjectID(); CurrentWeapon->WeaponRarity = weaponRarity; CurrentWeapon->WeaponType = weaponType; CurrentWeapon->WeaponName = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char)); CurrentWeapon->WeaponStatsString = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char)); SetWeaponStats(CurrentWeapon, 0, 0, 0); if(CurrentWeapon->WeaponName) strcpy(CurrentWeapon->WeaponName, weaponName); else CurrentWeapon->WeaponName = "Error: Memory Allocation Failed!"; CurrentWeapon->WeaponGlyphs = CreateText(CurrentWeapon->WeaponName, CurrentWeapon->WeaponPickup.Position.x, CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f + 25, 50, TextTint, Center, Plain); CreateStatsString(CurrentWeapon->WeaponStatsString, CurrentWeapon->BonusStrength, CurrentWeapon->BonusAgility, CurrentWeapon->BonusDefense); CurrentWeapon->WeaponStatsGlyphs = CreateText(CurrentWeapon->WeaponStatsString, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 25), 50, TextTint, Center, Plain); ChangeTextZIndex(CurrentWeapon->WeaponGlyphs, 451); ChangeTextZIndex(CurrentWeapon->WeaponStatsGlyphs, 451); CurrentWeapon->WeaponSprite = (Sprite *) CreateSprite(weaponTexture, 256, 256, 22, 1, 1, 0, 0); CreateCollisionBox(&CurrentWeapon->WeaponPickup, &CurrentWeapon->Position, WeaponDrop, width / 2, height, CurrentWeapon->objID); CreateCollisionBox(&CurrentWeapon->WeaponAttack, &CurrentWeapon->Position, collisionGroup, height / 4, height / 4, CurrentWeapon->objID); CurrentWeapon->WeaponLength = 80.0f; nameLen = strlen(CurrentWeapon->WeaponName); statsLen = strlen(CurrentWeapon->WeaponStatsString); if(nameLen >= statsLen) { CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", nameLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 2 * CurrentWeapon->WeaponGlyphs->Glyph->Height)); } else { CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", statsLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 2 * CurrentWeapon->WeaponGlyphs->Glyph->Height)); } CurrentWeapon->WeaponHoverBackground->Visible = FALSE; //Start off shopless CurrentWeapon->CurrentShop = NULL; CurrentWeapon->WeaponFalling = FALSE; return CurrentWeapon; }
void FWeaponSlot :: AddWeaponList(const char *list, bool clear) { FString copy(list); char *buff = copy.LockBuffer(); char *tok; if (clear) { Clear(); } tok = strtok(buff, " "); while (tok != NULL) { AddWeapon(tok); tok = strtok(NULL, " "); } }
int CBasePlayerWeapon::AddToPlayer( CBasePlayer *pPlayer ) { int bResult = CBasePlayerItem::AddToPlayer( pPlayer ); pPlayer->pev->weapons |= (1<<m_iId); if ( !m_iPrimaryAmmoType ) { m_iPrimaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo1() ); m_iSecondaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo2() ); } if (bResult) return AddWeapon( ); return FALSE; }
void ASCharacter::SpawnDefaultInventory() { if (Role < ROLE_Authority) { return; } for (int32 i = 0; i < DefaultInventoryClasses.Num(); i++) { if (DefaultInventoryClasses[i]) { FActorSpawnParameters SpawnInfo; SpawnInfo.bNoCollisionFail = true; ASWeapon* NewWeapon = GetWorld()->SpawnActor<ASWeapon>(DefaultInventoryClasses[i], SpawnInfo); AddWeapon(NewWeapon); } } }
void ALonelyMenCharacter::SpawnDefaultInventory() { int32 InventoryCount = this->DefaultInventoryClasses.Num(); for (int32 i = 0; i < InventoryCount;i++) { if (DefaultInventoryClasses[i]) { FActorSpawnParameters SpawnInfo; SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding; ALMWeapon* NewWeapon = GetWorld()->SpawnActor<ALMWeapon>(DefaultInventoryClasses[i], SpawnInfo); AddWeapon(NewWeapon); } } if (Inventory.Num()>0) { EquipWeapon(Inventory[0]); } }
void AWeapon::AttachToOwner (AActor *other) { Super::AttachToOwner (other); Ammo1 = AddAmmo (Owner, AmmoType1, AmmoGive1); Ammo2 = AddAmmo (Owner, AmmoType2, AmmoGive2); SisterWeapon = AddWeapon (SisterWeaponType); if (Owner->player != NULL) { if (!Owner->player->userinfo.GetNeverSwitch() && !(WeaponFlags & WIF_NO_AUTO_SWITCH)) { Owner->player->PendingWeapon = this; } if (Owner->player->mo == players[consoleplayer].camera) { StatusBar->ReceivedWeapon (this); } } GivenAsMorphWeapon = false; // will be set explicitly by morphing code }
void ANimModCharacter::SpawnDefaultInventory() { if (Role < ROLE_Authority) { return; } //Initialize the empty array of our inventory. int32 maxFlatInventoryCount = 10 * MAX_SLOTS_PER_INVENTORY_SLOT; for (int32 i = 0; i < maxFlatInventoryCount; ++i) Inventory.Add(nullptr); int32 NumWeaponClasses = DefaultInventoryClasses.Num(); for (int32 i = 0; i < NumWeaponClasses; i++) { if (DefaultInventoryClasses[i]) { FActorSpawnParameters SpawnInfo; SpawnInfo.bNoCollisionFail = true; ANimModWeapon* NewWeapon = GetWorld()->SpawnActor<ANimModWeapon>(DefaultInventoryClasses[i], SpawnInfo); AddWeapon(NewWeapon); } } for (auto *weapon : Inventory) { if (weapon != nullptr) { EquipWeapon(weapon); break; } } // equip first weapon in inventory /*if (Inventory.Num() > 0) { if (Inventory[0].Num() > 0) EquipWeapon(Inventory[0][0]); }*/ }
int CBasePlayerWeapon::AddToPlayer( CBasePlayer *pPlayer ) { if (!UTIL_IsMasterTriggered(m_sMaster, pPlayer)) // return FALSE; // AJH allows for locked weapons int bResult = CBasePlayerItem::AddToPlayer( pPlayer ); pPlayer->pev->weapons |= (1<<m_iId); if ( !m_iPrimaryAmmoType ) { m_iPrimaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo1() ); m_iSecondaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo2() ); } if (bResult) { return AddWeapon( ); } return FALSE; }
bool FWeaponSlot::AddWeapon(const char *type) { return AddWeapon(static_cast<PClassWeapon *>(PClass::FindClass(type))); }
void UAREquipmentComponent::ServerAddWeapon_Implementation(FARDragDropInfo Weapon, int32 SlotID, int32 Hand) { AddWeapon(Weapon, SlotID, Hand); }
bool CBotWeapons::Update(bool bOverrideAllFromEngine) { // create mask of weapons data short int i = 0; unsigned short int iWeaponsSignature = 0x0; // check sum of weapons edict_t *pWeapon; CBaseHandle *m_Weapons = CClassInterface::GetWeaponList(m_pBot->GetEdict()); CBaseHandle *m_Weapon_iter; m_Weapon_iter = m_Weapons; for (i = 0; i < MAX_WEAPONS; i++) { // create a 'hash' of current weapons pWeapon = (m_Weapon_iter == NULL) ? NULL : INDEXENT(m_Weapon_iter->GetEntryIndex()); iWeaponsSignature += ((unsigned int)pWeapon) + ((pWeapon == NULL) ? 0 : (unsigned int)CClassInterface::GetWeaponState(pWeapon)); m_Weapon_iter++; } // if weapons have changed this will be different if (iWeaponsSignature != m_iWeaponsSignature) // m_fUpdateWeaponsTime < engine->Time() ) { this->ClearWeapons(); int iWeaponState; register unsigned short int i; bool bFound; const char *pszClassname; CBaseHandle *m_Weapons = CClassInterface::GetWeaponList(m_pBot->GetEdict()); CBotWeapon *m_BotWeapon_iter = m_theWeapons; // loop through the weapons array and see if it is in the CBaseCombatCharacter for (i = 0; i < MAX_WEAPONS; i++) { m_Weapon_iter = &m_Weapons[i]; iWeaponState = 0; bFound = false; pWeapon = INDEXENT(m_Weapon_iter->GetEntryIndex()); if (!pWeapon || pWeapon->IsFree()) { continue; } iWeaponState = CClassInterface::GetWeaponState(pWeapon); pszClassname = pWeapon->GetClassName(); CWeapon *pWeaponInfo = CWeapons::GetWeapon(pszClassname); if (pWeaponInfo != NULL) { if (iWeaponState != WEAPON_NOT_CARRIED) { CBotWeapon *pAdded = AddWeapon(pWeaponInfo, i, pWeapon, bOverrideAllFromEngine); pAdded->SetHasWeapon(true); } } } // check again in 1 second m_fUpdateWeaponsTime = engine->Time() + 1.0f; m_iWeaponsSignature = iWeaponsSignature; return true; // change } return false; }
bool FWeaponSlot::AddWeapon(const char *type) { return AddWeapon (PClass::FindClass (type)); }
void WeaponInit() { int i; for (i = 0; i <= 0xff; i++){ AddWeapon(i, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3); //3 to make unbuyable by default } /* * id, name, wpndmg, wpndmg_z1, wpndmg_z2, freq, speed, slot, price, range, accuracy, ammo1, ammo2, reloadtime, special, team * * str = "" * fmt = "AddWeapon(%s, "%s", %s, %s, %s, %s, 1, %s, %s, %s, %s, %s, %s, %s, %s, 0);\n" * wtype = {'name', 'dmg', 'dmz_z1', 'dmg_z2', 'rate', 'slot', 'price', 'range', 'dispersion', 'ammo', 'ammoin', 'reload', 'recoil'} * * function map(f, list) * r = {} * for i,v in ipairs(list) do * r[i] = f(v) * end * return r * end * * for i=1,0xff do * str = str .. fmt:format(i, unpack(map(function(t) return itemtype(i, t) end, wtype))) * end * */ //weapons table AddWeapon(1, "USP", 24, 0, 0, 360, 1, 2, 500, 300, 0, 12, 100, 1100, 1, 0); AddWeapon(2, "Glock", 21, 0, 0, 360, 1, 2, 400, 250, 0, 20, 120, 1100, 2, 0); AddWeapon(3, "Deagle", 34, 0, 0, 600, 1, 2, 650, 300, 0, 7, 35, 1050, 0, 0); AddWeapon(4, "P228", 22, 0, 0, 360, 1, 2, 600, 300, 0, 13, 53, 1350, 0, 0); AddWeapon(5, "Elite", 22, 0, 0, 320, 1, 2, 1000, 300, 0, 15, 120, 1250, 0, 0); AddWeapon(6, "Five-Seven", 21, 0, 0, 280, 1, 2, 750, 300, 0, 20, 100, 2400, 0, 0); AddWeapon(10, "M3", 26, 0, 0, 800, 1, 1, 1700, 50, 10, 8, 32, 2250, 6, 0); AddWeapon(11, "XM1014", 22, 0, 0, 480, 1, 1, 3000, 50, 10, 7, 32, 1750, 6, 0); AddWeapon(20, "MP5", 13, 0, 0, 120, 1, 1, 1500, 300, 2, 30, 120, 1150, 0, 0); AddWeapon(21, "TMP", 9, 0, 0, 80, 1, 1, 1250, 100, 4, 30, 120, 1000, 0, 2); AddWeapon(22, "P90", 11, 0, 0, 80, 1, 1, 2350, 300, 3, 50, 100, 1750, 0, 0); AddWeapon(23, "Mac 10", 9, 0, 0, 80, 1, 1, 1400, 100, 4, 30, 90, 1700, 0, 1); AddWeapon(24, "UMP45", 15, 0, 0, 160, 1, 1, 1700, 300, 3, 25, 90, 1750, 0, 0); AddWeapon(30, "AK-47", 22, 0, 0, 120, 1, 1, 2500, 300, 3, 30, 90, 1375, 0, 1); AddWeapon(31, "SG552", 24, 35, 0, 160, 1, 1, 3500, 325, 0, 30, 90, 1250, 4, 1); AddWeapon(32, "M4A1", 22, 0, 0, 120, 1, 1, 3100, 300, 2, 30, 90, 1100, 1, 2); AddWeapon(33, "Aug", 24, 35, 0, 160, 1, 1, 3500, 325, 0, 30, 90, 2100, 4, 2); AddWeapon(34, "Scout", 45, 50, 100, 800, 1, 1, 2750, 350, 0, 10, 60, 900, 5, 0); AddWeapon(35, "AWP", 50, 65, 150, 2600, 1, 1, 4750, 400, 0, 10, 30, 2000, 5, 0); AddWeapon(36, "G3SG1", 32, 37, 45, 240, 1, 1, 5000, 350, 1, 20, 60, 2300, 5, 0); AddWeapon(37, "SG550", 30, 35, 40, 240, 1, 1, 4200, 350, 1, 30, 90, 2250, 5, 0); AddWeapon(38, "Galil", 13, 0, 0, 120, 1, 1, 2000, 300, 1, 35, 90, 1250, 0, 1); AddWeapon(39, "Famas", 14, 0, 0, 120, 1, 1, 2250, 300, 1, 25, 90, 1250, 2, 2); AddWeapon(40, "M249", 15, 0, 0, 80, 1, 1, 5750, 300, 8, 100, 200, 2300, 0, 0); AddWeapon(41, "Tactical Shield", 0, 0, 0, 0, 1, 1, 1000, 0, 0, 0, 0, 0, 0, 2); AddWeapon(45, "Laser", 1000, 0, 0, 1200, 1, 1, 6500, 1000, 0, 15, 45, 1000, 0, 3); AddWeapon(46, "Flamethrower", 30, 0, 0, 120, 1, 1, 3200, 55, 0, 100, 200, 1000, 0, 3); AddWeapon(47, "RPG Launcher", 325, 0, 0, 2000, 1, 1, 4000, 700, 0, 1, 2, 2500, 0, 3); AddWeapon(48, "Rocket Launcher", 70, 0, 0, 800, 1, 1, 5500, 700, 0, 20, 60, 1500, 0, 3); AddWeapon(49, "Grenade Launcher", 75, 0, 0, 800, 1, 1, 5500, 320, 0, 20, 60, 1500, 0, 3); AddWeapon(50, "Knife", 45, 90, 0, 320, 1, 3, 0, 7, 0, -1, -1, 0, 3, 0); AddWeapon(51, "HE", 105, 0, 0, 400, 1, 4, 300, 320, 0, 1, 0, 0, 7, 0); AddWeapon(52, "Flashbang", 0, 0, 0, 400, 1, 4, 200, 320, 0, 2, 0, 0, 7, 0); AddWeapon(53, "Smoke Grenade", 0, 0, 0, 400, 1, 4, 300, 320, 0, 1, 0, 0, 7, 0); AddWeapon(54, "Flare", 0, 0, 0, 400, 1, 4, 150, 320, 0, 1, 0, 0, 7, 0); AddWeapon(55, "Bomb", 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3); AddWeapon(56, "Defuse Kit", 0, 0, 0, 0, 1, 0, 200, 0, 0, 0, 0, 0, 0, 2); AddWeapon(57, "Kevlar", 0, 0, 0, 0, 1, 0, 650, 0, 0, 0, 0, 0, 0, 0); AddWeapon(58, "Kevlar+Helm", 0, 0, 0, 0, 1, 0, 1000, 0, 0, 0, 0, 0, 0, 0); AddWeapon(59, "Night Vision", 0, 0, 0, 0, 1, 0, 1250, 0, 0, 0, 0, 0, 0, 0); AddWeapon(61, "Primary Ammo", 0, 0, 0, 0, 1, 0, 50, 0, 0, 0, 0, 0, 0, 0); AddWeapon(62, "Secondary Ammo", 0, 0, 0, 0, 1, 0, 50, 0, 0, 0, 0, 0, 0, 0); AddWeapon(63, "Planted Bomb", 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3); }
void CWeapons::LoadWeapons(const char *szWeaponListName, WeaponsData_t *pDefault) { if ((szWeaponListName != NULL) && (szWeaponListName[0] != 0)) { KeyValues *kv = new KeyValues("Weapons"); char szFilename[1024]; CBotGlobals::BuildFileName(szFilename, "weapons", BOT_CONFIG_FOLDER, "ini", false); if (kv) { if (kv->LoadFromFile(filesystem, szFilename, NULL)) { kv = kv->FindKey(szWeaponListName); if (kv) { kv = kv->GetFirstSubKey(); if (0) kv = kv->GetFirstTrueSubKey(); while (kv != NULL) { WeaponsData_t newWeapon; memset(&newWeapon, 0, sizeof(WeaponsData_t)); const char *szKeyName = kv->GetName(); char lowered[64]; strncpy(lowered, szKeyName, 63); lowered[63] = 0; __strlow(lowered); newWeapon.szWeaponName = CStrings::GetString(lowered); newWeapon.iId = kv->GetInt("id"); newWeapon.iSlot = kv->GetInt("slot"); newWeapon.minPrimDist = kv->GetFloat("minPrimDist"); newWeapon.maxPrimDist = kv->GetFloat("maxPrimDist"); newWeapon.m_fProjSpeed = kv->GetFloat("m_fProjSpeed"); newWeapon.m_iAmmoIndex = kv->GetInt("m_iAmmoIndex"); newWeapon.m_iPreference = kv->GetInt("m_iPreference"); KeyValues *flags = kv->FindKey("flags"); if (flags) { int i = 0; while (szWeaponFlags[i][0] != '\0') { if (flags->FindKey(szWeaponFlags[i]) && (flags->GetInt(szWeaponFlags[i]) == 1)) newWeapon.m_iFlags |= (1 << i); i++; } } AddWeapon(new CWeapon(&newWeapon)); kv = kv->GetNextTrueSubKey(); } } } kv->deleteThis(); } } if (pDefault != NULL) { // No weapons from INI file then add default if (m_theWeapons.size() == 0) { while (pDefault->szWeaponName[0] != '\0') { AddWeapon(new CWeapon(pDefault)); pDefault++; } } } }
Weapon* CreateDroppedWeapon(int weaponType, int weaponRarity, float width, float height, float xPos, float yPos) { Weapon *CurrentWeapon = AddWeapon(); Vec2 ColliderPos; Vec3 TextTint; int nameLen, statsLen; Vec2Set(&ColliderPos, xPos, yPos); Vec3Set(&TextTint, 0, 0, 0); CurrentWeapon->WeaponFOF = DroppedWeapon; // Friend or Foe tag CurrentWeapon->objID = GetObjectID(); CurrentWeapon->WeaponRarity = weaponRarity; CurrentWeapon->WeaponType = weaponType; CurrentWeapon->WeaponName = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char)); CurrentWeapon->WeaponStatsString = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char)); CurrentWeapon->WeaponLength = 80.0f; if(CurrentWeapon->WeaponName) CreateWeaponName(&CurrentWeapon->WeaponName, CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity); else CurrentWeapon->WeaponName = "Error: Memory Allocation Failed!"; CreateWeaponStats(CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity, &CurrentWeapon->BonusStrength, &CurrentWeapon->BonusAgility, &CurrentWeapon->BonusDefense); Vec2Set(&CurrentWeapon->Position, xPos, yPos); CurrentWeapon->WeaponSprite = CreateWeaponSprite(CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity, xPos, yPos); // Special Weapon!! if (!strcmp(CurrentWeapon->WeaponName,"Sausage Sausage of sausage")) { CurrentWeapon->WeaponSprite->SpriteTexture = LoadTexture("TextureFiles/BattleAxe.png"); CurrentWeapon->WeaponType = Axe; CurrentWeapon->BonusAgility += 12; CurrentWeapon->BonusStrength += 12; CurrentWeapon->BonusDefense += 12; } CreateCollisionBox(&CurrentWeapon->WeaponPickup, &CurrentWeapon->Position, WeaponDrop, width / 2, height, CurrentWeapon->objID); CreateCollisionBox(&CurrentWeapon->WeaponAttack, &CurrentWeapon->Position, WeaponDrop, width / 3, height / 2, CurrentWeapon->objID); CurrentWeapon->WeaponGlyphs = CreateText(CurrentWeapon->WeaponName, CurrentWeapon->WeaponPickup.Position.x, CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f + 25, 50, TextTint, Center, Plain); CreateStatsString(CurrentWeapon->WeaponStatsString, CurrentWeapon->BonusStrength, CurrentWeapon->BonusAgility, CurrentWeapon->BonusDefense); CurrentWeapon->WeaponStatsGlyphs = CreateText(CurrentWeapon->WeaponStatsString, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 25), 50, TextTint, Center, Plain); ChangeTextZIndex(CurrentWeapon->WeaponGlyphs, 451); ChangeTextZIndex(CurrentWeapon->WeaponStatsGlyphs, 451); nameLen = strlen(CurrentWeapon->WeaponName); statsLen = strlen(CurrentWeapon->WeaponStatsString); if(nameLen >= statsLen) { CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", nameLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f));// + CurrentWeapon->WeaponGlyphs->Glyph->Height)); } else { CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", statsLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f));// + CurrentWeapon->WeaponGlyphs->Glyph->Height)); } CurrentWeapon->WeaponHoverBackground->Visible = FALSE; CurrentWeapon->WeaponParticle = CreateFoxParticleSystem("TextureFiles/ParticlePlatform.png", xPos, yPos, 9, -1, 3, .15f, 270, 0, 0.3f, 0, 110, 100, 50.0f, 1.0f, 0.7f); //Start off shopless CurrentWeapon->CurrentShop = NULL; CurrentWeapon->WeaponFalling = FALSE; return CurrentWeapon; }