Skocz do zawartości
Gopnik

[Rozwiązane] Ogranicznik HP

Rekomendowane odpowiedzi

Siemka!

Mam pytanie i prośbę w jednym. Czy po wpisaniu !hp osoba dostanie 50HP czy całe 100HP? Jeśli nie to jakie warunki musiałbym wpisać żeby dodawało 50HP i nie żeby nie przekraczało 100HP gdy ktoś ma np. 76HP

hpibronie.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze nie ma czegoś takiego jak "ADMFLAG_VIP":

Cytat

RegAdminCmd("sm_hp", MojeHp, ADMFLAG_VIP);
RegAdminCmd("sm_guns", Guns, ADMFLAG_VIP);

 

Możesz ustawić sobie zamiast tego ADMFLAG_CUSTOMx lub zrobić sobie zrobić funkcje, która sprawdza czy gracz jest VIP'em (zamiast ADMFLAG_CUSTOM1 możesz użyć innych flag https://wiki.alliedmods.net/Checking_Admin_Flags_(SourceMod_Scripting)
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!):

Cytat

stock bool IsClientVIP(client) {
    if (GetUserFlagBits(client) && ADMFLAG_CUSTOM1) {
        if (CheckCommandAccess(client, "player_vip", ADMFLAG_CUSTOM1, false)) {
            return true;
        }
    }
    return false;
}

 

Kolejną sprawą jest to, że nie zbyt ogarniam czego potrzebujesz, bo ten kod wydaje się okej:

Cytat

public Action MojeHp(int client, int args)
{
    int hp = GetClientHealth(client);
    
    if (hp <= 50) {
        SetEntityHealth(client, 100);
    }
    if (hp <= 75) {
        SetEntityHealth(client, 100);
    }
} 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kolega wyżej opisał już admflag więc nie będę powielał tego.

 

A co do drugiego problemu, o ile dobrze zrozumiałem chodzi ci o regeneracje hp do 100 nie ważne jaką ilość HP ma Client - jeśli to tak to starczy 

 

public Action MojeHp(int client, int args)
{
    int hp = GetClientHealth(client);
    
    if (hp <= 1) {
        SetEntityHealth(client, 100);
    }
} 

[testowałem u siebie]

 

lub 

 

public Action MojeHp(int client, int args)
{
    int hp = GetClientHealth(client);
    
    if (hp <= 50) {
        SetEntityHealth(client, 100);
    }
    if (hp <= 75) {
        SetEntityHealth(client, 100);
    }
    if (hp <= 1) {
        SetEntityHealth(client, 100);
    }
} 

 

Niżej cały kod

 

Spoiler

#include <sourcemod>
#include <sdktools>
#include <cstrike> 

public void OnPluginStart() {
    RegAdminCmd("sm_hp", MojeHp, ADMFLAG_CUSTOM1);
    RegAdminCmd("sm_guns", Guns, ADMFLAG_CUSTOM1);
}

public Action MojeHp(int client, int args)
{
    int hp = GetClientHealth(client);
    
    if (hp <= 50) {
        SetEntityHealth(client, 100);
    }
    if (hp <= 75) {
        SetEntityHealth(client, 100);
    }
    if (hp <= 1) {
        SetEntityHealth(client, 100);
    }
} 

public Action Guns(int client, int args) 
{
    Menu menu = new Menu(Guns_Handler);
    menu.SetTitle("Choose Weapon:");
    menu.AddItem("1", "AK + DEAGLE");
    menu.AddItem("2", "M4A4 + DEAGLE");
    menu.AddItem("3", "AWP + DEAGLE");
    
    menu.Display(client, MENU_TIME_FOREVER);
}

public int Guns_Handler(Menu menu, MenuAction action, int client, int position) {
    switch (action) 
    {
        case MenuAction_Select
        {
            switch (position) 
            {
                case 0
                {
                    GivePlayerItem(client, "weapon_ak47");
                    GivePlayerItem(client, "weapon_deagle");
                }
                case 1
                {
                    GivePlayerItem(client, "weapon_m4a1");
                    GivePlayerItem(client, "weapon_deagle");
                    
                    }
                case 2
                {
                    GivePlayerItem(client, "weapon_awp");
                    GivePlayerItem(client, "weapon_deagle");
                }
            }
            
        }
        case MenuAction_End:delete menu;
    }
}

 

Edytowane przez kyo

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
9 godzin temu, kyo napisał:

A co do drugiego problemu, o ile dobrze zrozumiałem chodzi ci o regeneracje hp do 100 nie ważne jaką ilość HP ma Client - jeśli to tak to starczy 

Nie nie, chodzi o to żeby osoba leczyła się o 50HP z limitem 100HP przykład osoba na 25HP wpisuje !HP dostaje 50HP czyli ma 75HP, gdy ma 50HP dostaje 50HP czyli ma 100HP, gdy ma więcej niż 50HP czyli np 51HP po wpisaniu !HP dostaje HP do pełnej 100 czyli 49HP lecz nie przekracza w żadnym wypadku 100HP

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 godziny temu, Gopnik napisał:

Nie nie, chodzi o to żeby osoba leczyła się o 50HP z limitem 100HP przykład osoba na 25HP wpisuje !HP dostaje 50HP czyli ma 75HP, gdy ma 50HP dostaje 50HP czyli ma 100HP, gdy ma więcej niż 50HP czyli np 51HP po wpisaniu !HP dostaje HP do pełnej 100 czyli 49HP lecz nie przekracza w żadnym wypadku 100HP

 

hpibronie.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
14 godzin temu, kyo napisał:

A co do drugiego problemu, o ile dobrze zrozumiałem chodzi ci o regeneracje hp do 100 nie ważne jaką ilość HP ma Client - jeśli to tak to starczy 

 


public Action MojeHp(int client, int args)
{
    int hp = GetClientHealth(client);
    
    if (hp <= 1) {
        SetEntityHealth(client, 100);
    }
} 

XDD

To co podałeś nijak ma się do twoich słów. Warunek zostanie spełniony tylko wtedy gdy gracz ma 1HP lub mniej XD

 

5 godzin temu, Gopnik napisał:

Nie nie, chodzi o to żeby osoba leczyła się o 50HP z limitem 100HP przykład osoba na 25HP wpisuje !HP dostaje 50HP czyli ma 75HP, gdy ma 50HP dostaje 50HP czyli ma 100HP, gdy ma więcej niż 50HP czyli np 51HP po wpisaniu !HP dostaje HP do pełnej 100 czyli 49HP lecz nie przekracza w żadnym wypadku 100HP

	if (GetClientHealth(client) + 50 > 100)
		SetEntityHealth(client, 100);
	else
		SetEntityHealth(client, GetClientHealth(client) + 50);

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...