W tym prostym poradniku opisze w jaki sposób dodamy item znany z amxmodx, nanosuit.
Tak więc na początku tworzymy prosty item, bez żadnych umiejętności, czyli:
#include <sourcemod>
#include <codmod>
new const String:nazwa[] = "Nanosuit";
new const String:opis[] = "Posiadasz odpornosc na umiejetnosci wszystkich klas oraz itemow";
public Plugin:myinfo =
{
name = nazwa,
author = "Linux`",
description = "Cod Item",
version = "1.0",
url = "http://steamcommunity.com/id/linux2006"
};
public OnPluginStart()
{
cod_register_item(nazwa, opis, 0, 0);
}
Następnie musimy otworzyć wszystkie nasze klasy bądż itemy (w zależności od tego na co chcemy mieć odporność) i dodać odpowiedni warunek, nad wykonaniem wybranej funkcji:
if(cod_get_user_item(ofiara) == cod_get_itemid("Nanosuit"))
oczywiście zamiast indexu (ofiara) wpisujemy id naszej ofiary a następnie blokujemy funkcje (return, continue, return Plugin_Continue), wszystko w zależności od tego gdzie dodajemy warunek. Niżej przykładowa klasa Komandos z odpornością na item:
#include <sourcemod>
#include <sdkhooks>
#include <codmod>
new const String:nazwa[] = "Komandos";
new const String:opis[] = "Posiada natychmiastowe zabicie z noza (+ppm)";
new const String:bronie[] = "#weapon_deagle";
new const inteligencja = 0;
new const zdrowie = 40;
new const obrazenia = 0;
new const wytrzymalosc = 0;
new const kondycja = 60;
new bool:ma_klase[65];
public Plugin:myinfo =
{
name = nazwa,
author = "Linux`",
description = "Cod Klasa",
version = "1.0",
url = "http://steamcommunity.com/id/linux2006"
};
public OnPluginStart()
{
cod_register_class(nazwa, opis, bronie, inteligencja, zdrowie, obrazenia, wytrzymalosc, kondycja);
}
public OnClientPutInServer(client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public OnClientDisconnect(client)
{
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public cod_class_enabled(client)
{
ma_klase[client] = true;
}
public cod_class_disabled(client)
{
ma_klase[client] = false;
}
public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
{
if(!IsValidClient(victim) || !IsValidClient(attacker))
return Plugin_Continue;
if(!ma_klase[attacker] || GetClientTeam(victim) == GetClientTeam(attacker))
return Plugin_Continue;
if(cod_get_user_item(victim) == cod_get_itemid("Nanosuit"))
return Plugin_Continue;
new String:weapon[32];
GetClientWeapon(attacker, weapon, sizeof(weapon));
if(StrEqual(weapon, "weapon_knife") && damagetype & DMG_SLASH && GetClientButtons(attacker) & IN_ATTACK2)
cod_inflict_damage(victim, attacker, GetClientHealth(victim)+1);
return Plugin_Changed;
}
Oczywiście tym sposobem, możemy również dodać odporność na rakiety, miny itp. A w wypadku odporności na klasę funkcja będzie wyglądać tak:
if(cod_get_user_class(ofiara) == cod_get_classid("Nazwa Klasy"))
Silnik wraz z paczką modyfikacji, można nabyć wyłącznie poprzez kontakt ze mną. Więcej o tym w sygnaturze.


Dodatki SourceMod















