[URL] https://amxx.pl/topic/136681-knife-api-v22/
Knife API v2.2
by [**Backstabnoob**](https://forums.alliedmods.net/member.php?u=47891
"Zewnętrzny odnośnik")
tłumaczenie z oryginalnego tematu:
[https://forums.allie...ad.php?t=240304](https://forums.alliedmods.net/showthread.php?t=240304
"Zewnętrzny odnośnik")
![[Image: opis.png]](http://amxx.pl/foty/grafikap/opis.png)
Moja pierwsza intencja tego pluginu była dla mojego nadchodzącego RPG.
Jednak nie mogłem znaleźć czegoś podobnego w pluginach, więc postanowiłem
włożyć to w wersję wstępną (takią same jak baza danych ORM).
Knife API dodaje w nowych nożach wiatry/bryzy do noży.
Mechanizm odbioru / wyłącznika / upuszczania.
W ten sposób wszystkie noże są dodawane przez standardowy sposób.
W wersji 2.0 dodano wiele nowych możliwości.
Jeśli masz wiele noży, możesz przełączać się między nimi (lub wyświetlić menu
jeśli masz cvar włączony) z R (+ przeładowanie) klawiszem.
UWAGA: Pluginy pisane przez Knife API <2.0 nie są kompatybilne z ostatnią
wersjią. Musisz zamienić stary plugin. Przepraszam, mam nadzieję, że to się
nie powtórzy!
Możliwości:
To jest na prawde bardzo dobre narzędzie dla pluginów, które zależy na nożu
takim jak noż RPG jailbreak i serwerów takiego typu.Tworzenie takich noży,
przez to staną sie bezproblemowe oprócz gry, zwłaszcza w połączeniu z
niestandardową poświatą.
Co ten plugin może robić:
Przypisywanie podstawowych wartości, takich jak modele i dźwięki do nowo
utworzonych noży.
Standardowy nóż z użyciem sprites patrz przykład.
Standardowy zasięg noży
Dodatkowe opóźnienie po rozpoczęciu animacji
Wyłapywanie Eventow takich jak atakowanie etc..
Co ten plugin nie może zrobić:
Choć może to nie wiele, ale musisz jeszcze dodać trochę swojej pracy do tego
pluginu.
Nie ma dużo rzeczy których nie zrobi, np nie zrobi ci kanapki:)
Wymagania są następujące:
Nie ma żadnych jak na razie !!
![[Image: smile.png]](https://amxx.pl/public/style_emoticons/default/smile.png)
![[Image: instalacja.png]](http://amxx.pl/foty/grafikap/instalacja.png)
Instalacja pluginu(api) jak u w innych pluginach, ściągnij skompiluj kod
źródłowy i łącz go z innymi pluginami
[http://amxx.pl/topic...-pluginow-amxx/](...instalacja-
pluginow-amxx/)
![[Image: konfiguracja.png]](http://amxx.pl/foty/grafikap/konfiguracja.png)
Domyslny nóż z CS'a został usunięty i zastąpiony przez ręce ( widać te na
jailbreak).
Jeśli chcesz to zmienić zakomentuj #DEFAULT_HANDS w kodzie źródłowym w linii
59.
Jeśli to zrobisz, to też nie potrzeba plików resources.
Do skonfigurowania wartości domyslnego noża/rąk edytuj __addDefaultKnife()
jest to w kodzie źródłowym w lini 203
![[Image: cvary.png]](http://amxx.pl/foty/grafikap/cvary.png)
* **knifeapi_dropondeath (domyślnie:1)** \- czy noże wypadają po śmierci gracza ? niestety noże nie wypadają po zgonie gracza, musisz również użyć knifeapi_lossondeath!
* **knifeapi_lossondeath (domyślnie:1)** \- Czt gracz straci wszystkie noże po śmierci ( z wyjątkiem noża podstawowego) ?
* **knifeapi_switchmenu (domyślnie:1)** \- po naciśnięciu klawisza R (RELOAD), chcesz, aby wyświetlić menu z nożami.
* **knifeapi_roundremoval (domyślnie:1)** \- noże które wypadły powinny być usunięte na koniec rundy ?
![[Image: wymaganemoduly.png]](http://amxx.pl/foty/grafikap/wymaganemoduly.png)
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <cstrike>
#include <fun>
#include <knifeapi>
#include <xs>
![[Image: inneinformacje.png]](http://amxx.pl/foty/grafikap/inneinformacje.png)
Przykładowy plugin:
Spoiler
#include <amxmodx>
#include <knifeapi>
#include <cstrike>
new g_Knife
new const VMODEL[] = "models/v_knife.mdl"
new const PMODEL[] = "models/p_knife.mdl"
const KNIFE_PRICE = 300
public plugin_precache()
{
precache_model(VMODEL)
precache_model(PMODEL)
// we precache the custom sprite .txt and .spr files
precache_generic("sprites/weapon_superknife.txt")
precache_generic("sprites/superknife.spr")
// ALWAYS precache your files. If you don't, the server will crash, knife API doesn't do it for you
}
public plugin_init()
{
register_plugin("Knife API example", "1.0", "idiotstrike")
g_Knife = Knife_Register(
.WeaponName = "Default Knife",
.VModel = VMODEL,
.PModel = PMODEL
)
// additional properties (for a list of all properties, see knifeapi.inc):
// we make the knife droppable
Knife_SetProperty(g_Knife, KN_CLL_Droppable, true)
// since we want to use a custom sprite, we set this to the .txt filename without extension.
// if you don't want to use a custom sprite, don't change the KN_STR_SpriteName property!
Knife_SetProperty(g_Knife, KN_STR_SpriteName, "weapon_superknife")
// we can also change the primary range to 60.0 to make it more unrealistic
//Knife_SetProperty(g_Knife, KN_CLL_PrimaryRange, 60.0)
register_clcmd("say /buyknife", "CmdBuyKnife")
}
public CmdBuyKnife(id)
{
if(!is_user_alive(id))
{
client_print(id, print_chat, "You need to be alive.")
}
else if(Knife_PlayerHas(id, g_Knife))
{
client_print(id, print_chat, "You already have this knife. Switch to knife and press R to see it.")
}
else
{
new Money = cs_get_user_money(id)
if(Money < KNIFE_PRICE)
{
client_print(id, print_center, "You have insufficient funds.")
}
else
{
Knife_PlayerGive(id, g_Knife)
cs_set_user_money(id, Money - KNIFE_PRICE)
}
}
return PLUGIN_HANDLED
}
Załączniki:
knifeapi.inc
knifeapi.sma
resources.zip