Knife Shop v3.0 - UPDATE

Тук е мястото да представите плъгин(и), написани от вас!
User avatar
DukMeN
Потребител
Потребител
Posts: 30
Joined: 07 Mar 2011, 19:43
Skype: iliqn_906
CS Nick: Smiley
Favorite version: CS: 1.6
Location: в форума
Contact:

Knife Shop v3.0 - UPDATE

Post by DukMeN »

Плъгин: Knife Shop
Версия: 3.0
Автор: Dr.Small а.к.а DukMeN- аз

Описание:
Този плъгин е като HideNSeek Shop-а само, че е предназначен за Knife сървъри, но може да го използвате и в обикновени.

Команди за играчите:
say /shop
say /knifeshop
say shop
say knifeshop

CVAR команди (въвеждат се в server.cfg или в amxx.cfg):

knifeshop_he_cost - Наглася колко да струва HE гранатата
knifeshop_flash_cost - Наглася колко да струва Флашката
knifeshop_gravity_cost - Наглася колко да струва Гравитацията
knifeshop_health_cost - Наглася колко да струва Кръвта
knifeshop_armor_cost - Наглася колко да струва Бронежилетката
knifeshop_speed_cost - Наглася колко да струва Бързината
knifeshop_godmode_cost - Наглася колко да струва Безсмъртието
knifeshop_silent_cost - Наглася колко да струва Тихото вървене
knifeshop_awp_cost - Наглася колко да струва AWP-то
knifeshop_deagle_cost - Наглася колко да струва Deagle-то
knifeshop_noclip_cost - Наглася колко да струва Преминаването през стени
knifeshop_camo_cost - Наглася колко да струва Камуфлажа

knifeshop_gravity_time - Наглася колко секунди да трае Гравитацията (default: 10)
knifeshop_speed_time - Наглася колко секунди да трае Бързината (default: 20)
knifeshop_godmode_time - Наглася колко секунди да трае Безсмъртие (default: 12)
knifeshop_silent_time - Наглася колко секунди да трае Тихото вървене (default: 30)
knifeshop_noclip_time - Наглася колко секунди да трае Преминаването през стени (default: 7)
knifeshop_camo_time - Наглася колко секунди да трае Камуфлажа (default: 15)

knifeshop_ammount_hp - Наглася колко кръв да дава след купуването и (default: 115)
knifeshop_ammount_armor - Наглася колко Бронежилетка да дава след купуването и (default: 60)

knifeshop_awp_ammo - Наглася колко патрона да дава на AWP-то след купуването му (default: 1)
knifeshop_deagle_ammo - Наглася колко патрона да дава на Deagle-то след купуването му (default: 1)

New Cvar:
knifeshop_hud_color - Цвета на съобщението от снимката по-долу (default: "255 255 0")

Команди:
knifeshop_give_points - използва се за да дадете точка(и) на някой играч
knifeshop_remove_points - използва се за да премахнете точка(и) от някой играч

ChangeLog:
Версия: 2.6: - Първа версия

Версия 2.7:
- Cvar-ите са сменени с Pcvars
- премахнати две библиотеки <amxmisc> и <fakemeta_util>
- премахнат итем Invisible, защотото правеше проблеми.

Версия 2.8:
- премахнат e event-а DeathMsg, защото го използвах за ресване на покупките когато играчът умре, но сега когато играча се spaw-не, тогава се ресват покупките.

Версия 2.9:
- вече shop-а не използва парите от играта а точки който се трупат когато убиете някого. Точките се запазват при излизане на играча. Точките се запазват по nick
- Добавени команди за даване и премахване на точки. Командите са за админи с флаг за rcon.
- Добавено HUD съобщение което стой постоянно долу в ляво и показва колко точки имате.
- При нормално убийство дава 1 точка, а при headshot - 2 точки.
Версия 3.0: Оптимизиране на плъгина

Ето снимка да видите как изглежда съобщението:
http://prikachi.com/images.php?images/256/7358256I.jpg

Благодарности на:
Flickercho

Това е всичко. Дано ви хареса. Ако има бъг с плъгина или пък имате някаква идея да се добави нещо пишете!
Attachments
Knife Shop v3.0.rar
(30.68 KiB) Downloaded 1246 times
Knife Shop 2.8.rar
(20.98 KiB) Downloaded 798 times
Last edited by DukMeN on 29 May 2014, 21:10, edited 7 times in total.
User avatar
SpeeDeeR
Потребител
Потребител
Posts: 41
Joined: 13 Feb 2011, 22:07
CS Nick: SpeeD
Favorite version: CS: 1.6
Steam Community ID: 76561198045340386
Location: Русе
Contact:

Re: Knife Shop

Post by SpeeDeeR »

Използвай pcvar. Многократно по-бърз е.
========================================================================;

Code: Select all

 register_logevent("EventRoundStart", 2, "1=Round_Start");
	register_event("DeathMsg", "EventDeath", "a");
Двата евента са глобални, а ти правиш това

Code: Select all

public EventRoundStart(id)
public EventDeath(id)
Те не предават конкретен индекс, предполагам е от недоглеждане.
========================================================================;
В същинското меню вместо да декларираш 2 променливи 13 пъти, за всеки 'case', които да присвояват едно и също, ги декларирай в началото. Ако не си разбрал, това са променливите за пари и стойността на покупката.
=======================================================================;
Няма смисъл да създаваш променливи, които да присвояват стойности, ако ги ползваш само веднъж.
========================================================================;
Защо си включил 'fakemeta_util' и 'fun' след като и двете правят еднакви неща. На практика ти включваш модул, който всъщност не ползваш, а е по-бърз от include-а.
========================================================================;
Не мисля, че видях място, където ресваш покупките в началото/края на рунда, а само когато играчът умре. Ами, ако не е умрял?
Също така, не мисля че има смисъл да ресваш покупките, когато човек излезе и влезе. Те така или иначе вече са реснати, когато е излязъл и стойността на променливата за въпросния индекс на играча вече е занулена.
========================================================================;
Няма смисъл да задължаваш хората да заредят звуците, които си използвал, повторно. Те са включени в играта и вече са заредени.
========================================================================;
User avatar
Schwarzenegger
Потребител
Потребител
Posts: 21
Joined: 12 Sep 2011, 17:30
Skype: Linux.MoD
CS Nick: Schwarzenegger`
Favorite version: CS: 1.6
Location: Бургас
Contact:

Re: Knife Shop

Post by Schwarzenegger »

- Ще може ли да направиш снимка на как изглежда ?
User avatar
DukMeN
Потребител
Потребител
Posts: 30
Joined: 07 Mar 2011, 19:43
Skype: iliqn_906
CS Nick: Smiley
Favorite version: CS: 1.6
Location: в форума
Contact:

Re: Knife Shop

Post by DukMeN »

Страница 1:
http://prikachi.com/images/808/4006808p.jpg

Страница 2:
http://prikachi.com/images/811/4006811q.jpg

Снимките са от новата версия: v2.7

П.П. Там отгоре на менюто дето пише, че е 2.6 версия е оправено сега е с 2.7
User avatar
Wicked-
Потребител
Потребител
Posts: 121
Joined: 22 Feb 2010, 14:02
Skype: wicked9511
CS Nick: Wicked
Favorite version: CS: 1.6
Location: Варна

Re: Knife Shop v2.7 - UPDATE

Post by Wicked- »

Супер си е и става и за Deathrun shop :D
User avatar
lexa
Потребител
Потребител
Posts: 114
Joined: 30 Aug 2011, 12:48
CS Nick: LexaPPTB
Favorite version: CS: 1.6

Re: Knife Shop v2.7 - UPDATE

Post by lexa »

Има ли някой които го ползва ? и доволни ли сте ?
User avatar
PhotoKiller
Потребител
Потребител
Posts: 89
Joined: 31 Jan 2014, 17:09
Favorite version: CS: 1.6
Location: Русе
Contact:

Re: Knife Shop v2.7 - UPDATE

Post by PhotoKiller »

lexa wrote:Има ли някой които го ползва ? и доволни ли сте ?
ние го използваме за нашия knife сервер. И да много е хубав плъгина ;)
User avatar
DukMeN
Потребител
Потребител
Posts: 30
Joined: 07 Mar 2011, 19:43
Skype: iliqn_906
CS Nick: Smiley
Favorite version: CS: 1.6
Location: в форума
Contact:

Re: Knife Shop v2.9 - UPDATE

Post by DukMeN »

Нова версия!
User avatar
Flickercho
Потребител
Потребител
Posts: 288
Joined: 25 Dec 2013, 18:51
Skype: -none-
CS Nick: zEx |Flick3rR ;]]*
Favorite version: CS: 1.6
Location: Стара Загора, На покрива на 7-ми блок, кв. Железник

Re: Knife Shop v2.9 - UPDATE

Post by Flickercho »

По кода могат да се направят някой оптимизации, но като заначало мисля да съобщя за грешките, които ще предизвикват ерори в логовете.
1. Във функцията на Ham_Spawn трябва да се сложи проверка дали играчът е жив, защото иначе ще дава грешки от сорта на: "Invalid player id 9" и функциите ще блокират - bool-овете няма да се рестартират.
Най лесно е така:

Code: Select all

if(!is_user_alive(id))       return PLUGIN_HANDLED
2. Същият метод трябва да се използва и във DeathMsg, където обаче не трябва да е за жив играч, а за свързан. Т.е., !is_user_connected(id)

ЕДИТ: 3. Освен това си забравил в тасковете да зададеш повечето bool-ове на false.
EДИТ: 4. Излишно е да се запазват на всяко убийство точките на жертвата, тъй като това изхабява много ресурси и причинява лаг.
ЕДИТ: 5. Излишно е да се извършват едни и същи функции при смърт и при спаун, понеже когато умреш, винаги ще се спауннеш, така че е по-добре да останат функциите само при спаун.

Оптимизации:
1. Най-излишното нещо, което виждам в кода, е проверката дали играчът е жив при избора на всеки един елемент. Много по-eфективно ще е, ако просто добавиш проверката (която е една и съща за всеки итъм) във функцията, където се създава самото меню, и не позволиш отварянето му, ако играчът не е жив.

2. Също не виждам смисъл във bool-овете за гранатите и другите неща като цяло, които могат да бъдат изчерпвани/изгубвани. И ако идеята да се използват един път на spawn, тогава съобщението не би трябвало да е "You already have this item". И относно гранатите специално, бива да се премахне този bool и да се замени с проверката "user_has_weapon(id, CSW_HEGRENADE)" (примерно), и ако играчът има съответното оръжие, да изписва даденото съобщение.

3. И сега нещо по-маловажно: просто няма смисъл да се добавя един и същи префикс във всяко едно отделно съобщение, когато можеш да зададеш константа или просто да използваш #define за него. Така ще се променя много по-лесно и удобно за потребителите, които желаят да поставят произволен префикс. Давам пример:

Code: Select all

new const Prefix[] = {"[Knife Shop]"}
И след това, да кажем това съобщение:

Code: Select all

ColorChat( 0, TEAM_COLOR, "[Knife Shop]^1 You allready have this item!" );
ще изглежда така:

Code: Select all

ColorChat( 0, TEAM_COLOR, "%s^1 You allready have this item!", Prefix );
Last edited by Flickercho on 29 May 2014, 20:12, edited 1 time in total.
User avatar
KiLLeR.
Потребител
Потребител
Posts: 173
Joined: 06 Mar 2011, 22:46
Skype: ЛС
CS Nick: KiLLeR ;]]
Favorite version: CS: Global Offensive
Steam Community ID: killer__________
Location: Тук-там!?!

Re: Knife Shop v2.9 - UPDATE

Post by KiLLeR. »

Flickercho wrote:EДИТ: 4. Излишно е да се запазват на всяко убийство точките на жертвата, тъй като това изхабява много ресурси и причинява лаг.
Тук си в грешка, никакви ресурси няма да се изхабят и още по малко да се причинява какъвто и да било лаг. Дори както го е направил той е по добре, защото ако примерно си играл 20-30 минути с някакъв ник, събрал си X точки и си смениш ника по време на игра, на първоначалния ник няма да се запази нищо. Може много лесно да тестваш казаното от мен, влзени с някакъв ник и събери малко точки, след това си смени ника по време на игра, излез от сървъра и след това влез отново, но с първоначалния ник на който си събрал точките и сам се увери какъв ще е резултата. Това всичко може да стане само ако функцията за запазване на точки се извика само при disconnect. И искам да подчертая че тези неща не ги говоря просто наизуст, всичко казано е от личен опит.
User avatar
Flickercho
Потребител
Потребител
Posts: 288
Joined: 25 Dec 2013, 18:51
Skype: -none-
CS Nick: zEx |Flick3rR ;]]*
Favorite version: CS: 1.6
Location: Стара Загора, На покрива на 7-ми блок, кв. Железник

Re: Knife Shop v2.9 - UPDATE

Post by Flickercho »

Запазването по никнейм е така, по принцип е по-добре (много) да се запазват по AuthID, тъй като това с никовете е голяма кражба. И аз говоря от опит, но това важи за запазване по AuthID, защото можеш и името да си смениш. Грешката е моя.
User avatar
KiLLeR.
Потребител
Потребител
Posts: 173
Joined: 06 Mar 2011, 22:46
Skype: ЛС
CS Nick: KiLLeR ;]]
Favorite version: CS: Global Offensive
Steam Community ID: killer__________
Location: Тук-там!?!

Re: Knife Shop v3.0 - UPDATE

Post by KiLLeR. »

А да, пропуснал съм да кажа че горе описания проблем важи само за запазване по ник.
User avatar
Wicked-
Потребител
Потребител
Posts: 121
Joined: 22 Feb 2010, 14:02
Skype: wicked9511
CS Nick: Wicked
Favorite version: CS: 1.6
Location: Варна

Re: Knife Shop v3.0 - UPDATE

Post by Wicked- »

Когато използвате плъгин, който запазва точки по ник слагате този плъгин задължително: http://cs-bg.info/plugin/91/
Иначе може да има злоупотреби. Ето какво става когато смениш ника си по време на игра:
1. Влизаш в сървъра с ник "Player" и имаш там едни 200 точки, които са ти запазени по него ник.
2. Сменяш си ника по време на игра с "Player2" и тези 200 точки се копират на другия ник.
3. Излизаш от сървъра с ник "Player2" и тези 200 точки се запазват на ник "Player2".
=> Вече "Player" и "Player2" никовете имат записани по 200 точки. И така може някой да реши, като събере много точки, да направи няколко ника с тях точки и да си ги ползва по-нататък или да ги даде на някой друг.
User avatar
Flickercho
Потребител
Потребител
Posts: 288
Joined: 25 Dec 2013, 18:51
Skype: -none-
CS Nick: zEx |Flick3rR ;]]*
Favorite version: CS: 1.6
Location: Стара Загора, На покрива на 7-ми блок, кв. Железник

Re: Knife Shop v3.0 - UPDATE

Post by Flickercho »

Wicked- wrote:Когато използвате плъгин, който запазва точки по ник слагате този плъгин задължително: http://cs-bg.info/plugin/91/
Иначе може да има злоупотреби. Ето какво става когато смениш ника си по време на игра:
1. Влизаш в сървъра с ник "Player" и имаш там едни 200 точки, които са ти запазени по него ник.
2. Сменяш си ника по време на игра с "Player2" и тези 200 точки се копират на другия ник.
3. Излизаш от сървъра с ник "Player2" и тези 200 точки се запазват на ник "Player2".
=> Вече "Player" и "Player2" никовете имат записани по 200 точки. И така може някой да реши, като събере много точки, да направи няколко ника с тях точки и да си ги ползва по-нататък или да ги даде на някой друг.
Toчно това имах предвид и затова предпочитам запазването по AuthID.
User avatar
Wicked-
Потребител
Потребител
Posts: 121
Joined: 22 Feb 2010, 14:02
Skype: wicked9511
CS Nick: Wicked
Favorite version: CS: 1.6
Location: Варна

Re: Knife Shop v3.0 - UPDATE

Post by Wicked- »

Запазването по AuthID също не е препоръчително ако в сървъра могат да влизат и non-steam играчи. Най-добре е по ник + плъгина даден по-горе или по IP.
Post Reply

Return to “Ваши плъгини”