Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Получение цены оружия

Статус пользователя GOOD FELLOW
сообщение 28.4.2014, 18:22
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Как можно получить цену оружия из магазина?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 28.4.2014, 18:25
Сообщение #2


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Они же не меняются, вставляй, какая есть.


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 28.4.2014, 18:28
Сообщение #3


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Цитата(vovan4ik1997 @ 28.4.2014, 18:25) *
Они же не меняются, вставляй, какая есть.


будет слишком муторно, если проделывать это с каждым оружием...
по типу пушки получать цену и прибавлять ее к деньгам юзера намного проще
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 28.4.2014, 18:53
Сообщение #4


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Не думаю, что такое есть, тебе для всего оружия надо? Если нет, то просто создай переменную и приравняй ее к цене нужного оружия.


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 28.4.2014, 18:54
Сообщение #5


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Цитата(vovan4ik1997 @ 28.4.2014, 18:53) *
Не думаю, что такое есть, тебе для всего оружия надо? Если нет, то просто создай переменную и приравняй ее к цене нужного оружия.


в том и дело, что для все
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 29.4.2014, 8:38
Сообщение #6


Иконка группы

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

GOOD FELLOW,
ну сделай массив с ценами
что-то типа

new g_weapons_costs[]
{
-1,
600, //p228
2200, //shield
2750, //scout
.....

и затем с помощью weapons_costs[weapon_id] брать цену)

https://wiki.alliedmods.net/CS_Weapons_Information


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 29.4.2014, 9:29
Сообщение #7


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Цитата(AndrewZ @ 29.4.2014, 8:38) *
GOOD FELLOW,
ну сделай массив с ценами
что-то типа

new g_weapons_costs[]
{
-1,
600, //p228
2200, //shield
2750, //scout
.....

и затем с помощью weapons_costs[weapon_id] брать цену)

https://wiki.alliedmods.net/CS_Weapons_Information


Напиши код для примера, если не сложно?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 29.4.2014, 9:46
Сообщение #8


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

тебе уже его написали вообще-то
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 29.4.2014, 9:48
Сообщение #9


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Можно ещё глянуть примеры в таком плагине
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>

#define Plugin "Sell Weapons"
#define Version "1.4"
#define Author "Doombringer"

#define MAX_WEAPONS 33

new const g_prices[MAX_WEAPONS][] = {
"0",
"600",
"0",
"2750",
"0",
"3000",
"0",
"1400",
"3500",
"0",
"800",
"750",
"1700",
"4200",
"2000",
"2250",
"500",
"400",
"4750",
"1500",
"5750",
"1700",
"3100",
"1250",
"5000",
"0",
"650",
"3500",
"2500",
"0",
"2350",
"0",
"0"
}

new cvar, buyzone, annonce, divide //Pcvar stuff, makes life easier
public plugin_init() // Plugin_init(): Does all the "one-time" stuff. Called after plugin_precache().
{
register_plugin(Plugin, Version, Author) //Register's the plugin so it can be seen in amx_help

register_clcmd("say /sell", "cmd_sell") //Registers the command itself. So if someone say /sell the function will be executed
register_clcmd("say_team /sell", "cmd_sell") //Save as above but for team chat

cvar = register_cvar("SW_enabled", "1") //Registers the cvar SW_enabled, Default 1 (If nothing else is in server.cfg or any other .cfg file)
buyzone = register_cvar("SW_buyzone", "0") //Registers the cvar SW_buyzone, Default 0 (If nothing else is in server.cfg or any other .cfg file)
annonce = register_cvar("SW_annonce", "120") //Registers the cvar SW_annonce, Default 120 (If nothing else is in server.cfg or any other .cfg file)
divide = register_cvar("SW_divide", "2") //Registers the cvar SW_divide, Default 2 (If nothing else is in server.cfg or any other .cfg file)

if(get_pcvar_num(annonce) > 1) //If the pcvar annonce is higher then 1
set_task(get_pcvar_float(annonce), "print_annonce",_,_,_,"b") //Set a task to run the annonce function every get_pcvar_float(annonce) time
}

public print_annonce() //The function that shows the annonce
{
if(get_pcvar_num(annonce) < 1) //If it's lower then 1
return PLUGIN_CONTINUE //Make the plugin continue (Yes i know i should do remove_task() but this is better)

client_print(0, print_chat, "Want to sell your weapon? Say /sell") //Prints the message to everyones chat area
return PLUGIN_CONTINUE //Continue...
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) { // http://forums.alliedmods.net/showthread.php?t=28284
new strtype[11] = "classname", ent = index
switch (jghgtype) {
case 1: copy(strtype, 6, "target")
case 2: copy(strtype, 10, "targetname")
}

while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

return ent
}

stock bool:fm_strip_user_gun(index, wid = 0, const wname[] = "") { // http://forums.alliedmods.net/showthread.php?t=28284
new ent_class[32]
if (!wid && wname[0])
copy(ent_class, 31, wname)
else {
new weapon = wid, clip, ammo
if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
return false

get_weaponname(weapon, ent_class, 31)
}

new ent_weap = fm_find_ent_by_owner(-1, ent_class, index)
if (!ent_weap)
return false

engclient_cmd(index, "drop", ent_class)

new ent_box = pev(ent_weap, pev_owner)
if (!ent_box || ent_box == index)
return false

dllfunc(DLLFunc_Think, ent_box)

return true
}

public cmd_sell(id) //The whole main function
{
if(get_pcvar_num(cvar) < 1) //If the pcvar cvar is lower then one
return PLUGIN_CONTINUE //Continue...

if(get_pcvar_num(buyzone) == 1 && cs_get_user_buyzone(id) == 0) //If pcvar buyzone is equal to one and user is not in a buyzone
{
client_print(id, print_chat, "[Sell] You need to be in a buyzone to sell weapons!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}

if(!is_user_alive(id)) //Isn't he alive?!
{
client_print(id, print_chat, "[Sell] You need to be alive to sell weapons!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}

new temp, weapon = get_user_weapon(id, temp, temp) //Fills weapon with the current hold weapon (temp is a so called dummy)
new price = str_to_num(g_prices[weapon]) //Gets the price for the current weapon

if(price == 0) //If it's equal to zero
{
client_print(id, print_chat, "[Sell] You can't sell that!") //Prints a angry little message :)
return PLUGIN_HANDLED //And ends the function
}

new weaponname[32] //Makes an array called weaponname, with a maximum of 32 - 1 chars
get_weaponname(weapon, weaponname, 31) //Gets the weapon name

new oldmoney = cs_get_user_money(id) //Gets the players money
new cash = clamp(oldmoney + (price / get_pcvar_num(divide)), 0, 16000) //clamps the total amount of cash, so it doesn't extend the 16000 limit

fm_strip_user_gun(id, weapon) //Calls the fm_strip_user_gun() stock
cs_set_user_money(id, cash) //Sets the money from cash

client_print(id, print_chat, "[Sell] You got %d$ for selling a %s", cs_get_user_money(id) - oldmoney, weaponname[7]) //Prints some info about what you got
return PLUGIN_HANDLED //Done
} //EOF


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 29.4.2014, 9:52
Сообщение #10


Иконка группы

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

GOOD FELLOW,
дак я и написал, просто продолжить надо :D

по ссылке список оружия c сортировкой по их ID, берешь и цену по списку выписываешь. Там где нет цены -1 ставь, ну или 0, как хочешь.

Код:
new g_weapons_costs[]
{
-1,
600, //p228
2200, //shield
2750, //scout
300, //hegrenade
3000, //xm1014
-1, //c4
.
...
....
}


Эту штуку куда-то вверх суешь, глобальный массив в общем.

А затем, там, где тебе нужно узнать цену оружия, берешь её из массива этого, вот так:
g_weapons_costs[ CSW_P228 ]
ну или
g_weapons_costs[ get_user_weapon( pid ) ]

winzh1,
что-то там ерунда какая-то, почему у некоторых id есть цена, а у других нет :o


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 29.4.2014, 9:54
Сообщение #11


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Код
new price = str_to_num(g_prices[weapon]) //Gets the price for the current weapon
    
   if(price == 0) //If it's equal to zero


А если много людей одновременно заюзает эту функцию, не будет путанины ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: