Трябва ми плъгин за AWP-DM-сървър, с който играчите, при желание и спечелени пари, да могат да си купуват различни AWP-модели.
Нещо подобно на плъгин AWP Models на OciXCrom™ MKD, пробвах го и е перфектно направен, но ако може да е с тази разлика - само който има достатъчно $$$ - да си купува желаните модели(така поне има мотивация и удоволствие от нещо "постигнато") и , играча да не "губи" закупеното АВП докато е в сървъра.
p.s. Тоест - всички модели да имат своя цена.... която предполагам с квари може да се променя...
Плъгин /buyAWPMODELS, или нещо подобно ?
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Плъгин /buyAWPMODELS, или нещо подобно ?
Редактирах ти моя плъгин - viewtopic.php?f=21&t=1160
Не е тествано обаче. В .ini файла добавяш цената като последен аргумент. Пример:
Не е тествано обаче. В .ini файла добавяш цената като последен аргумент. Пример:
Код за потвърждение: Избери целия код
"Cool AWP" "models/cool_awp/v_awp.mdl" "models/cool_awp/p_awp.mdl" "" "16000"
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN_VERSION "1.3.1+Money"
#define MAX_SNIPERS 30
#define DEFAULT_V "models/v_awp.mdl"
#define DEFAULT_P "models/p_awp.mdl"
enum _:Info
{
Name[32],
VModel[128],
PModel[128],
Flag,
Price
}
new g_eSnipers[MAX_SNIPERS][Info]
new g_iSnipersNum
new g_iSniper[33]
new bool:g_bFirstTime[33]
new bool:g_bHasSniper[33][MAX_SNIPERS]
new g_iSayText
new g_pAtSpawn
public plugin_init()
{
register_plugin("AWP Models", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXAWPModels", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_dictionary("AWPModels.txt")
register_event("CurWeapon", "OnSelectAWP", "be", "1=1", "2=18")
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
register_clcmd("say /awp", "ShowMenu")
register_clcmd("say_team /awp", "ShowMenu")
g_pAtSpawn = register_cvar("am_open_at_spawn", "0")
g_iSayText = get_user_msgid("SayText")
}
public plugin_precache()
ReadFile()
ReadFile()
{
new szConfigsName[256], szFilename[256]
get_configsdir(szConfigsName, charsmax(szConfigsName))
formatex(szFilename, charsmax(szFilename), "%s/AWPModels.ini", szConfigsName)
new iFilePointer = fopen(szFilename, "rt")
if(iFilePointer)
{
new szData[300], szFlag[2], szPrice[8]
while(!feof(iFilePointer))
{
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)
switch(szData[0])
{
case EOS, ';': continue
default:
{
parse(szData, g_eSnipers[g_iSnipersNum][Name], charsmax(g_eSnipers[][Name]), g_eSnipers[g_iSnipersNum][VModel], charsmax(g_eSnipers[][VModel]),
g_eSnipers[g_iSnipersNum][PModel], charsmax(g_eSnipers[][PModel]), szFlag, charsmax(szFlag), szPrice, charsmax(szPrice))
if(!is_blank(g_eSnipers[g_iSnipersNum][VModel]))
precache_model(g_eSnipers[g_iSnipersNum][VModel])
if(!is_blank(g_eSnipers[g_iSnipersNum][PModel]))
precache_model(g_eSnipers[g_iSnipersNum][PModel])
g_eSnipers[g_iSnipersNum][Flag] = is_blank(szFlag) ? ADMIN_ALL : read_flags(szFlag)
g_eSnipers[g_iSnipersNum][Price] = str_to_num(szPrice)
szFlag[0] = EOS
szPrice[0] = EOS
g_iSnipersNum++
}
}
}
fclose(iFilePointer)
}
}
public ShowMenu(id)
{
new szTitle[128]
formatex(szTitle, charsmax(szTitle), "%L", id, "AM_MENU_TITLE")
new iMenu = menu_create(szTitle, "MenuHandler")
for(new iFlags = get_user_flags(id), i; i < g_iSnipersNum; i++)
{
if(g_eSnipers[i][Flag] == ADMIN_ALL || iFlags & g_eSnipers[i][Flag])
menu_additem(iMenu, formatin("%s \y[%i$] %s", g_eSnipers[i][Name], g_eSnipers[i][Price], g_iSniper[id] == i ? formatin("%L", id, "AM_MENU_SELECTED") : formatin("")))
else
menu_additem(iMenu, formatin("%s %L", g_eSnipers[i][Name], id, "AM_MENU_VIP_ONLY"), .paccess = g_eSnipers[i][Flag])
}
if(menu_pages(iMenu) > 1)
menu_setprop(iMenu, MPROP_TITLE, formatin("%s%L", szTitle, id, "AM_MENU_TITLE_PAGE"))
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public MenuHandler(id, iMenu, iItem)
{
if(iItem != MENU_EXIT)
{
if(g_iSniper[id] == iItem)
ColorChat(id, "%L", id, "AM_CHAT_ALREADY")
else if(!g_bHasSniper[id][iItem] && cs_get_user_money(id) < g_eSnipers[iItem][Price])
ColorChat(id, "You don't have enough money!")
else
{
g_iSniper[id] = iItem
if(is_user_alive(id) && get_user_weapon(id) == CSW_AWP)
OnSelectAWP(id)
g_bHasSniper[id][iItem] = true
ColorChat(id, "%L", id, "AM_CHAT_SELECTED", g_eSnipers[iItem][Name])
}
}
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
arrayset(g_bHasSniper[id], false, sizeof(g_bHasSniper[]))
g_bFirstTime[id] = true
g_iSniper[id] = 0
}
public OnPlayerSpawn(id)
{
if(is_user_alive(id) && get_pcvar_num(g_pAtSpawn) && g_iSniper[id] == 0 && g_bFirstTime[id])
{
g_bFirstTime[id] = false
ShowMenu(id)
}
}
public OnSelectAWP(id)
{
if(is_blank(g_eSnipers[g_iSniper[id]][VModel]))
set_pev(id, pev_viewmodel2, DEFAULT_V)
else set_pev(id, pev_viewmodel2, g_eSnipers[g_iSniper[id]][VModel])
if(is_blank(g_eSnipers[g_iSniper[id]][PModel]))
set_pev(id, pev_weaponmodel2, DEFAULT_P)
else set_pev(id, pev_weaponmodel2, g_eSnipers[g_iSniper[id]][PModel])
}
bool:is_blank(szString[])
return szString[0] == EOS
ColorChat(const id, const szInput[], any:...)
{
new iPlayers[32], iCount = 1
static szMessage[191]
vformat(szMessage, charsmax(szMessage), szInput, 3)
format(szMessage[0], charsmax(szMessage), "%L %s", id ? id : LANG_PLAYER, "AM_CHAT_PREFIX", szMessage)
replace_all(szMessage, charsmax(szMessage), "!g", "^4")
replace_all(szMessage, charsmax(szMessage), "!n", "^1")
replace_all(szMessage, charsmax(szMessage), "!t", "^3")
if(id)
iPlayers[0] = id
else
get_players(iPlayers, iCount, "ch")
for(new i; i < iCount; i++)
{
if(is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_iSayText, _, iPlayers[i])
write_byte(iPlayers[i])
write_string(szMessage)
message_end()
}
}
}
#if !defined MAX_FMT_LENTH
#define MAX_FMT_LENGTH 256
#endif
#if !defined __vformat_allower
#define __vformat_allower __vformat_allower_
__vformat_allower_()
{
vformat("", 0, "", 0)
}
#endif
formatin(const format[], any:...)
{
static formatted[MAX_FMT_LENGTH]
#emit PUSH.C 0x2
#emit PUSH.S format
const FORMATTED_CHARSMAX = charsmax(formatted)
#emit PUSH.C FORMATTED_CHARSMAX
#emit LOAD.S.PRI 0x8 // Get size of arguments (count of arguments multiply by sizeof(cell))
#emit ADDR.ALT 0xC // This is the pointer to first argument
#emit ADD // Now in PRI we have the pointer to hidden return argument
#emit LOAD.I // Now in PRI we have the pointer to return buffer
#emit PUSH.PRI
#emit PUSH.C 0x10
#emit SYSREQ.C vformat
#emit STACK 0x14
#emit RETN // Don't execute the code for copy return generated by compiler
__vformat_allower()
return formatted
}
-
iv69
Извън линия - Потребител
- Мнения: 744
- Регистриран на: 17 Мар 2018, 15:34
- Се отблагодари: 214 пъти
- Получена благодарност: 39 пъти
Плъгин /buyAWPMODELS, или нещо подобно ?
Оо благодаря , сега го видях ... извинявай ! Ще го пробвам и ще пиша отзив как е ! И пак Благодаря !!!
Добавено преди 4 часа 12 минути 46 секунди:
Да , плъгина работи точно и гладко ! Благодаря, стана точно както го исках и си го мислех... Само да знаят ако и други го слагат , че кавичките трябва да са два комплекта ако модела е само "v" - точно преди цената . Иначе всичко е супер, сега да си наредя интересни и нови модели и ...
Пак благодаря Оцикс, каквото си започнал винаги си го довършил !!! Катинара.
Добавено преди 4 часа 12 минути 46 секунди:
Да , плъгина работи точно и гладко ! Благодаря, стана точно както го исках и си го мислех... Само да знаят ако и други го слагат , че кавичките трябва да са два комплекта ако модела е само "v" - точно преди цената . Иначе всичко е супер, сега да си наредя интересни и нови модели и ...
Пак благодаря Оцикс, каквото си започнал винаги си го довършил !!! Катинара.
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 9 Отговори
- 2848 Преглеждания
-
Последно мнение от OciXCrom
-
- 0 Отговори
- 1061 Преглеждания
-
Последно мнение от Marinovv
-
- 1 Отговори
- 1684 Преглеждания
-
Последно мнение от iv69
-
- 8 Отговори
- 3246 Преглеждания
-
Последно мнение от summertime vibes
-
- 29 Отговори
- 10411 Преглеждания
-
Последно мнение от d3ath2435
-
- 11 Отговори
- 4009 Преглеждания
-
Последно мнение от SILENT HILL`
-
- 2 Отговори
- 1615 Преглеждания
-
Последно мнение от sf4n
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 18 госта