[ZP] Cost For Weapons In Zombie Plague


[ZP] Cost For Weapons In Zombie Plague

В данной статье вы узнаете как сделать оружие которое находится в начальном выборе платным за аммо-паки / деньги аналогично (но там у каждого свои найтивы, так что тут примера не будет, сами думайте).

[ZP] Cost For Weapons In Zombie Plague

И так собственно как же сделать так чтоб оружия в начальном выборе можно было не просто выбрать а купить. Естественно нам понадобится исходник главного мода. Открываем его и где то после инклудов регистрируем переменные которые будем использовать в дальнейшем для того чтоб каждый раз не возвращаться к ним (в средину огромного кода).

И так после инклудов добавляем:

#define cost_glock18 1
#define cost_usp 1
#define cost_p228 1
#define cost_deagle 1
#define cost_fiveseven 2
#define cost_elite 2

#define cost_m3 3
#define cost_xm1014 6

#define cost_tmp 3
#define cost_mac10 3
#define cost_mp5navy 3
#define cost_ump45 3
#define cost_p90 5

#define cost_galil 4
#define cost_famas 5
#define cost_ak47 5
#define cost_m4a1 6
#define cost_aug 7
#define cost_sg552 7

#define cost_scout 6
#define cost_sg550 8
#define cost_g3sg1 10
#define cost_awp 10

#define cost_m249 12


Это будут наши цены в аммо-паках которые мы будем использовать в дальнейшем коде.
Далее ищем строки где прописаны названия оружия

// Primary and Secondary Weapon Names
new const WEAPONNAMES[][] = { \”\”, \”P228 Compact\”, \”\”, \”Schmidt Scout\”, \”\”, \”XM1014 M4\”, \”\”, \”Ingram MAC-10\”, \”Steyr AUG A1\”,
\”\”, \”Dual Elite Berettas\”, \”FiveseveN\”, \”UMP 45\”, \”SG-550 Auto-Sniper\”, \”IMI Galil\”, \”Famas\”,
\”USP .45 ACP Tactical\”, \”Glock 18C\”, \”AWP Magnum Sniper\”, \”MP5 Navy\”, \”M249 Para Machinegun\”,
\”M3 Super 90\”, \”M4A1 Carbine\”, \”Schmidt TMP\”, \”G3SG1 Auto-Sniper\”, \”\”, \”Desert Eagle .50 AE\”,
\”SG-552 Commando\”, \”AK-47 Kalashnikov\”, \”\”, \”ES P90\” }


И заменяем на свои, чтоб были видны цены когда меню открывается в начале раунда

new const WEAPONNAMES[][] = { \”\”, \”P228 [\\r1 ammo\\w]\”, \”\”, \”Scout [\\r6 ammo\\w]\”, \”\”, \”XM1014 [\\r6 ammo\\w]\”, \”\”, \”MAC-10 [\\r3 ammo\\w]\”,
\”Steyr AUG [\\r7 ammo\\w]\”, \”\”, \”Dual Elite [\\r2 ammo\\w]\”, \”Fiveseven [\\r2 ammo\\w]\”, \”UMP 45 [\\r3 ammo\\w]\”, \”SG-550 [\\r8 ammo\\w]\”,
\”Galil [\\r4 ammo\\w]\”, \”Famas [\\r5 ammo\\w]\”, \”USP45 [\\r1 ammo\\w]\”, \”Glock [\\r1 ammo\\w]\”, \”AWP [\\r10 ammo\\w]\”, \”MP5 Navy [\\r3 ammo\\w]\”,
\”M249 [\\r12 ammo\\w]\”, \”M3 [\\r3 ammo\\w]\”, \”M4A1 [\\r6 ammo\\w]\”, \”TMP [\\r3 ammo\\w]\”, \”G3SG1 [\\r10 ammo\\w]\”, \”\”, \”Desert Eagle [\\r1 ammo\\w]\”,
\”SG-552 [\\r7 ammo\\w]\”, \”AK-47 [\\r5 ammo\\w]\”, \”\”, \”P90 [\\r5 ammo\\w]\” }


Далее идём у выбор оружия, ищем строки

// Buy Primary Weapon
buy_primary_weapon(id, selection)
{
// Drop previous weapons
drop_weapons(id, 1)
drop_weapons(id, 2)

// Strip off from weapons
fm_strip_user_weapons(id)
fm_give_item(id, \”weapon_knife\”)

// Get weapon\’s id and name
static weaponid, wname[32]
weaponid = ArrayGetCell(g_primary_weaponids, selection)
ArrayGetString(g_primary_items, selection, wname, charsmax(wname))


И сразу после них прописываем следующее

if(weaponid == CSW_M3)
{
if(g_ammopacks[id] < cost_m3)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_m3
fm_give_item(id, \”weapon_m3\”)
}
if(weaponid == CSW_XM1014)
{
if(g_ammopacks[id] < cost_xm1014)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_xm1014
fm_give_item(id, \”weapon_xm1014\”)
}
if(weaponid == CSW_TMP)
{
if(g_ammopacks[id] < cost_tmp)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_tmp
fm_give_item(id, \”weapon_tmp\”)
}
if(weaponid == CSW_MAC10)
{
if(g_ammopacks[id] < cost_mac10)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_mac10
fm_give_item(id, \”weapon_mac10\”)
}
if(weaponid == CSW_MP5NAVY)
{
if(g_ammopacks[id] < cost_mp5navy)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_mp5navy
fm_give_item(id, \”weapon_mp5\”)
}
if(weaponid == CSW_UMP45)
{
if(g_ammopacks[id] < cost_ump45)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_ump45
fm_give_item(id, \”weapon_ump45\”)
}
if(weaponid == CSW_P90)
{
if(g_ammopacks[id] < cost_p90)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_p90
fm_give_item(id, \”weapon_p90\”)
}
if(weaponid == CSW_GALIL)
{
if(g_ammopacks[id] < cost_galil)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_galil
fm_give_item(id, \”weapon_galil\”)
}
if(weaponid == CSW_FAMAS)
{
if(g_ammopacks[id] < cost_famas)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_famas
fm_give_item(id, \”weapon_famas\”)
}
if(weaponid == CSW_AK47)
{
if(g_ammopacks[id] < cost_ak47)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_ak47
fm_give_item(id, \”weapon_ak47\”)
}
if(weaponid == CSW_M4A1)
{
if(g_ammopacks[id] < cost_m4a1)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_m4a1
fm_give_item(id, \”weapon_m4a1\”)
}
if(weaponid == CSW_AUG)
{
if(g_ammopacks[id] < cost_aug)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_aug
fm_give_item(id, \”weapon_aug\”)
}
if(weaponid == CSW_SG552)
{
if(g_ammopacks[id] < cost_sg552)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_sg552
fm_give_item(id, \”weapon_sg552\”)
}
if(weaponid == CSW_SCOUT)
{
if(g_ammopacks[id] < cost_scout)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_scout
fm_give_item(id, \”weapon_scout\”)
}
if(weaponid == CSW_SG550)
{
if(g_ammopacks[id] < cost_sg550)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_sg550
fm_give_item(id, \”weapon_sg550\”)
}
if(weaponid == CSW_G3SG1)
{
if(g_ammopacks[id] < cost_g3sg1)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_g3sg1
fm_give_item(id, \”weapon_g3sg1\”)
}
if(weaponid == CSW_AWP)
{
if(g_ammopacks[id] < cost_awp)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_awp
fm_give_item(id, \”weapon_awp\”)
}
if(weaponid == CSW_M249)
{
if(g_ammopacks[id] = ArraySize(g_secondary_items))
{
// Toggle autoselect
if (key == MENU_KEY_AUTOSELECT)
WPN_AUTO_ON = 1 – WPN_AUTO_ON

// Reshow menu unless user exited
if (key != MENU_KEY_EXIT)
show_menu_buy2(id)

return PLUGIN_HANDLED;
}

// Store selected weapon
WPN_AUTO_SEC = key

// Drop secondary gun again, in case we picked another (bugfix)
drop_weapons(id, 2)

// Get weapon\’s id
static weaponid, wname[32]
weaponid = ArrayGetCell(g_secondary_weaponids, key)
ArrayGetString(g_secondary_items, key, wname, charsmax(wname))


Этого кода прописываем

if(weaponid == CSW_GLOCK18)
{
if(g_ammopacks[id] < cost_glock18)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_glock18
fm_give_item(id, \”weapon_glock18\”)
}
if(weaponid == CSW_USP)
{
if(g_ammopacks[id] < cost_usp)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_usp
fm_give_item(id, \”weapon_usp\”)
}
if(weaponid == CSW_P228)
{
if(g_ammopacks[id] < cost_p228)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_p228
fm_give_item(id, \”weapon_p228\”)
}
if(weaponid == CSW_DEAGLE)
{
if(g_ammopacks[id] < cost_deagle)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_deagle
fm_give_item(id, \”weapon_deagle\”)
}
if(weaponid == CSW_FIVESEVEN)
{
if(g_ammopacks[id] < cost_fiveseven)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_fiveseven
fm_give_item(id, \”weapon_fiveseven\”)
}
if(weaponid == CSW_ELITE)
{
if(g_ammopacks[id] < cost_elite)
{
zp_colored_print(id, \”^x04[ZP]^x01 %L\”, id, \”NOT_ENOUGH_AMMO\”)
return PLUGIN_HANDLED
}
g_ammopacks[id] -= cost_elite
fm_give_item(id, \”weapon_elite\”)
}


И после данного кода

// Give the new weapon and full ammo
fm_give_item(id, wname)
ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])


Не забываем так же прописать return PLUGIN_HANDLED
Вроде бы всё, файлов не прилагаю, тот кто не ленивый прочтёт поймёт и сделает всё сам. А кому лень, ну тогда эта статья вам не к чему. Надеюсь помог кому то, кто хотел себе подобное)
А хотя как подсказку чтоб вы не путались что да как, приложу строки которые вам нужно будет использовать (это для тех кто совсем ничего не понял, чтоб сверится с новостью и строками которые я предоставлю чтоб осознать что новое а после чего нужно вписывать).

zombie_plague40_sma.rar


Комментарии:


Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Zombie-Mod.com — крупнейший игровой портал по Counter Strike