Cześć, dziś świątecznie czyszcząc dysk znalazłem sentymentalną dla siebie perełkę, mój pierwszy kod, szybko skompilowałem i wrzuciłem do siebie, jako tako działa, możecie się bawić na tej podstawce albo ją edytować.
Miłej zabawy dla każdego kto skorzysta z tego kodu.
@edit z chęcią poprawię błedy/chrashe, jak takowe wystąpią (raczej wystąpią)
#include <sourcemod>
#include <sdktools>
#include <clientprefs>
#include <multicolors>
#include <sdkhooks>
/*
- Zdrowie D /1 -
- Szybkosc D //2 -
- Niewidzialnosc D /3
- $$$$ D /4 - 16k $
- Wampiryzm D /5 - leczysz się zadając obrażenia
- Nieskonczona amnunicja /6
- Platynowe Naboje - Twoje strzaly zabijaja na hita
- Tank /8 - 75 % redukcji dmg (dodana też opcja, że można spowolnić)
- Lekarz - Dostajesz 200hp i 3x medishoty
- Pech - nic nie wylosowales
*/
public Plugin myinfo =
{
name = "Super Moce",
author = "Milosh",
description = "Pierwszy plugin",
version = "1.0",
url = ""
};
int moc[MAXPLAYERS+1];
public void OnPluginStart() {
RegConsoleCmd("sm_lista", CMD_lista) //lista, krotki opis supermocy
HookEvent("player_spawn", OnPlayerSpawn);
HookEvent("weapon_fire", WeaponFire);
}
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public void OnClientDisconnect(int client)
{
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action CMD_lista(int client, int args)
{
Menu menupomoc = new Menu(Menu_Pomocy);
menupomoc.SetTitle("Lista supermocy");
menupomoc.AddItem("1", "Zdrowie");
menupomoc.AddItem("2", "Szybkosc");
menupomoc.AddItem("3", "Niewidzialnosc");
menupomoc.AddItem("4", "Bogactwo");
menupomoc.AddItem("5", "Wampiryzm");
menupomoc.AddItem("6", "Nieskonczona amunicja");
menupomoc.AddItem("7", "Platynowe Naboje");
menupomoc.AddItem("8", "Tank");
menupomoc.AddItem("9", "Lekarz");
menupomoc.AddItem("10", "Pech");
menupomoc.ExitButton = true;
menupomoc.Display(client, 0);
}
public int Menu_Pomocy (Menu menu, MenuAction action, int client , int position) {
if (action == MenuAction_Select) {
delete menu;
}
}
public Action OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast) {
int client = GetClientOfUserId(event.GetInt("userid"));
moc[client] = GetRandomInt(1,10);
CPrintToChat(client, "{lightred}Pod !lista znajduje się spis umiejętności")
if (moc[client] != 3) {
SetEntityRenderMode(client, RENDER_TRANSCOLOR),
SetEntityRenderColor(client, 255, 255, 255, 255);
}
switch(moc[client]) {
case 1: SetEntityHealth(client, 800), // < zdrowie = ta wartość
PrintToChat(client, "Wylosowana super moc to: Zdrowie");
case 2: SetClientSpeed(client, 2.8), // < prędkość = ta wartość
PrintToChat(client, "Wylosowana super moc to: Szybkosc");
case 3: SetEntityRenderMode(client, RENDER_NONE),
SetEntityRenderColor(client, 255, 255, 255, 128), // lepiej nie ruszać
PrintToChat(client, "Wylosowana super moc to: Niewidzialnosc");
case 4: SetEntData(client, FindSendPropInfo("CCSPlayer", "m_iAccount"), 16000), // < ilość pieniędzy = ta wartość
PrintToChat(client, "Wylosowana super moc to: Bogactwo");
case 5: PrintToChat(client, "Wylosowana super moc to: Wampiryzm");
case 6: PrintToChat(client, "Wylosowana super moc to: Nieskonczona amunicja");
case 7: PrintToChat(client, "Wylosowana super moc to: Platynowe Naboje");
case 8: PrintToChat(client, "Wylosowana super moc to: Tank");
case 9: PrintToChat(client, "Wylosowana super moc to: Lekarz"),
SetEntityHealth(client, 200),
GivePlayerItem(client, "weapon_healthshot"),
GivePlayerItem(client, "weapon_healthshot"),
GivePlayerItem(client, "weapon_healthshot");
case 10: PrintToChat(client, "Pech, nic nie wylosowales");
}
}
public Action OnTakeDamage(int client,int & attacker,int & inflictor, float & damage,int & damagetype){
if(moc[attacker] == 5)
{
int new_health = GetClientHealth(attacker);
SetEntityHealth(attacker, new_health+5); // < ta wartość = hp, które zyskujesz po trafieniu
}
if(moc[attacker] == 7) {
damage*=15; // ta wartość = mnozik dmg;
return Plugin_Changed;
}
if(moc[client] == 8) {
damage -= damage * 0.75; // < wartosć redukcji dmg
//SetClientSpeed(client, 0.85); <<<<< spowolnienienie klasy
return Plugin_Changed;
}
return Plugin_Changed;
}
public Action WeaponFire(Handle:event,const String:name[],bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event,"userid"));
new WeaponIndex = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
if(moc[client] == 6) {
if (WeaponIndex == -1) return;
new ClipAmmo = GetEntProp(WeaponIndex, Prop_Send, "m_iClip1");
if (!ClipAmmo) return;
if (ClipAmmo != -1) SetEntProp(WeaponIndex, Prop_Send, "m_iClip1", 50);
}
}
public void SetClientSpeed(int client, float speed)
{
SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue",speed);
}