Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Dodatkowe hp dla wszystkich graczy.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
25 odpowiedzi w tym temacie

#1 Menel

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 16.05.2014 18:55

Witam

Czy jest możliwość stworzenia pluginu, który będzie dawał każdemu graczowi +15 hp na początku rundy? Chodzi mi o to, że gracz zaczynajać rundę będzie miał zamiast 100hp to 115hp.

Jak tak to proszę o pomoc ;)


  • +
  • -
  • 0

#2 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 16.05.2014 20:15

Czy jest możliwość stworzenia pluginu, który będzie dawał każdemu graczowi +15 hp na początku rundy?

Tak

 

 

To dosłownie 1 min roboty.

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

public plugin_init() 
{
	register_plugin("Zjem", "Ci", "Noge")
	RegisterHam(Ham_Spawn,"player","Spawn",1)
}

public Spawn(id) set_pev(id,pev_health,115.0)

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#3 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 15:53

Przy dodawaniu hp dla gracza sprawdzilbym czy on zyje aby uniknac crashow



#4 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 16:22

dzięki BlackPerfum.

 

A jak teraz pobrać max_hp ? Bo chcę zrobić pozycję w hud:

  • [Zycie: 115 | 100%]

 


  • +
  • -
  • 0

#5 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 16:49

get_user_health(id)



#6 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 16:52

Tak pobiorę aktualne zdrowie gracza a ja chcę zrobić wyświetlanie procentowe wiec potrzebuje max_hp gracza ;)


  • +
  • -
  • 0

#7 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 17:01

new max_hp[33];

 

na koncu w spawn daj

max_hp[id] = get_user_health(id);

 

jezeli masz jakis plugin ktory dodaje hp za killa czy tam heda czy w ogóle za cos innego to zrob task i tam bedziesz musial sprawdzac max_hp jezeli bedzie wieksze od tego co bylo na poczatku aby procenty sie zgadzaly


Użytkownik UTeam edytował ten post 17.05.2014 17:03


#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 17.05.2014 17:12

Przy dodawaniu hp dla gracza sprawdzilbym czy on zyje aby uniknac crashow

a to akurat nie ma sensu co za różnica czy żyje czy nie? Ważne że jest podłączony i jest respiony a pozatym to jest event post czyli is_user_alive zawsze powinno zwrócić true

A jak teraz pobrać max_hp ? Bo chcę zrobić pozycję w hud:

jeśli w żadnym innym pluginie nie zwiększasz max hp wynosi:
1. Max hp ( standardowa ilość hp z jaką się respisz/do jakiej mogą cię zleczyć automaty itd ) 100
2. Max hp ( wyznaczona przeze mnie ) 115
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#9 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 17:18

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        new hp = get_user_health(id);
    
        set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
        ShowSyncHudMsg(id, CreateHudSyncObj(), "[Zycie : %d | ]", hp);
    }
    else
    {
        set_hudmessage(255, 0, 0, 0.02, 0.20);
        ShowSyncHudMsg(id, CreateHudSyncObj(), "Nie zyjesz!");
    }
    return true;

}

Mam taki hud, to jak zrobić aby procentowo pokazywało zdrowie .?

Dodam, że do pluginu dodałem to co wyżej tzn. aby gracze mieli 115 hp.


Użytkownik Menel edytował ten post 17.05.2014 17:22

  • +
  • -
  • 0

#10 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 18:13

 

a to akurat nie ma sensu co za różnica czy żyje czy nie? Ważne że jest podłączony i jest respiony a pozatym to jest event post czyli is_user_alive zawsze powinno zwrócić true

Gdzies kiedys znalazlem temat w ktorym bylo napisane ze jezeli dziala sie na graczach tak jak tutaj dodaje sie hp lepiej sprawdzic czy gracz zyje.

Poniewaz inny plugin moze zabic gracza od razu na spawnie (nie wiadomo jakie pluginy ma kolega) a to jest tylko jeden warunek,ktory nie zaszkodzi a napewnp pomoze :)

 

http://amxx.pl/topic...e-zycie-gracza/

http://amxx.pl/topic...-procentowe-hp/

 

Z tym to zrobisz



#11 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 18:30

Ale jaka zmienna odpowiada za max hp .?

floatround(hp/max_hp[id]*100)

  • +
  • -
  • 0

#12 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 19:08

hp = get_user_health(id) czyli aktualne hp gracza

max_hp (jezeli inne pluginy nie zmieniaja ci hp nie dodaja za killa itp, to pobierasz to w spawn) = jezeli nie zmienia to wlasnie to jest poczatkowe hp na respie



#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 17.05.2014 19:44

Gdzies kiedys znalazlem temat w ktorym bylo napisane ze jezeli dziala sie na graczach tak jak tutaj dodaje sie hp lepiej sprawdzic czy gracz zyje.
Poniewaz inny plugin moze zabic gracza od razu na spawnie (nie wiadomo jakie pluginy ma kolega) a to jest tylko jeden warunek,ktory nie zaszkodzi a napewnp pomoze

Tak zgadzam się inny plugin może zabić ale to niczego nie zmienia na szczęście :D

 

Zacznijmy od tego że post w ham'ie jest wykonywany w trakcie realnego respienia (może nawet chwilę przed) ale wszystkie dane już wskazują na to że gracz żyje.

Teraz nie ważne jakim sposobem zabijesz gracza to nadasz mu ustawienia martwego gracza (pare tam flag + wyzerowania niektórych wartości nie mam zamiaru ich wymieniać ;D) dlatego nic się nie stanie jak ustawisz mu te 115 hp (tym sposobem co przedstawiłem) bo i tak go nie ozywisz tym chyba nawet o tym nie przyjdzie pakiet do klienta ale nie sprawdzałem bo nie było potrzeby

 

A poza tym to 99% pluginów operuje na pre spawn'ie (ostatni argument przyjmuje domyślna wartość a zatem pre) i jeśli tam zabijesz gracza to post się nie wykona a bynajmniej nie w ham'ie ;D

Wyjątkiem tu by było gdybyś zabił gracza po cichu (zabił nie sprawił by wyglądał jak martwy) ale tak by tego ham nie zobaczył (nwm dokładnie po czym ham to sprawdza gdyz nigdy tego nie sprawdzałem) ale wątpię by standardowe moduły na to pozwalały

 

UTeam mega rada na przyszłość:

"Nie musisz robic zmiennej globalnej, to zrób statyczną. Nie musisz robić zmiennej statycznej to zrób lokalną. (No nie zawsze jak masz robić tablicę o 9098609786507 elementach to walnij sobie jakiegoś globalnego buffora zawsze się przyda) Nie musisz robić zmiennej lokalnej to zrób stałą."


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#14 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 21:03

Daje cały plugin, proszę napisać co robi źle bo nie działa procentowe hp.

Teraz wyświetla tak:

  • [Zycie: 150 | 0%]
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>
#include <engine>

#define TASK_GREET 240

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#define FLAGA_VIPA ADMIN_LEVEL_H

new bool:maksymalne_zdrowie_gracza[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Spawn,"player","Spawn",1)
}

public client_connect(id)
{
    set_task(15.0, "przywitanie", id+TASK_GREET, "", 0, "a", 1)
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        new hp = get_user_health(id);
        new bool:czyVip = bool:(get_user_flags(id) & FLAGA_VIPA);
        
        set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
        ShowSyncHudMsg(id, CreateHudSyncObj(), "[Zycie : %d | %i%%]^n[Fragi: %i]^n[VIP: %s]", hp, floatround(hp/maksymalne_zdrowie_gracza[id]*100), get_user_frags(id), czyVip ? "Tak" : "Nie");
    }
    else
    {
        set_hudmessage(255, 0, 0, 0.02, 0.20);
        ShowSyncHudMsg(id, CreateHudSyncObj(), "Nie zyjesz!");
    }
    return true;

}

public przywitanie(id)
{
    id-=TASK_GREET
    
    new name[32]
    get_user_name(id,name,31)
    
    ColorChat(id,  GREEN, "[INFO]^x01 Witaj %s na serwerze^x04 4FuN^x01 BETA", name);
}

public Spawn(id)
{
    set_pev(id,pev_health,150.0)
    
    maksymalne_zdrowie_gracza[id] = get_user_health(id);
}

 


  • +
  • -
  • 0

#15 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 21:10

new bool:maksymalne_zdrowie_gracza[33];

 

zmien moze na

 

new maksymalne_zdrowie_gracza[33];



#16 Menel

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Rafał
  • Lokalizacja:Dzierżoniów
Offline

Napisano 17.05.2014 21:13

To nic nie da ;)


  • +
  • -
  • 0

#17 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 17.05.2014 21:42

A to nie wiem zawsze myslalem ze typ bool przyjmuje tylko dwie wartosci true i false (1/0).

Blad masz pewnie w tym "floatround(hp/maksymalne_zdrowie_gracza[id]*100",ktoras ze zmiennych przyjmuje wartosc 0 i przy mnozeniu przez 0 zawsze masz 0.



#18 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 17.05.2014 23:35

Dżizys :D

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <colorchat>
#include <engine>

#define TASK_GREET 240

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#define FLAGA_VIPA ADMIN_LEVEL_H
new HudObj

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    HudObj = CreateHudSyncObj()
    RegisterHam(Ham_Spawn,"player","Spawn",1)
}

public client_connect(id)	set_task(15.0, "przywitanie", id+TASK_GREET, "", 0, "a", 1)

public client_PreThink(id)
{
	static Float:hp
    if(is_user_alive(id))
    {
        pev(id,pev_health,hp)
        set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
        ShowSyncHudMsg(id, HudObj, "[Zycie : %i | %i%%]^n[Fragi: %i]^n[VIP: %s]", hp, floatround(hp/1.5), get_user_frags(id), (get_user_flags(id) & FLAGA_VIPA) ? "Tak" : "Nie");
    }
    else
    {
        set_hudmessage(255, 0, 0, 0.02, 0.20);
        ShowSyncHudMsg(id, HudObj, "Nie zyjesz!");
    }
    return true;

}

public przywitanie(id)
{
    id-=TASK_GREET
    
    new name[32]
    get_user_name(id,name,31)
    
    ColorChat(id,  GREEN, "[INFO]^x01 Witaj %s na serwerze^x04 4FuN^x01 BETA", name);
}

public Spawn(id)	set_pev(id,pev_health,150.0)

Nie prościej ?


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#19 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 20.05.2014 18:00

Takie ustawianie maksymalnego poziomu życia sprawi, że plugin będzie niekompatybilny z innymi pluginami, czy modami (np. popularnym BF2).
Obok liczby aktualnych punktów życia każdego gracza (pev_health), każdy gracz posiada także, a jakże… maksymalną liczbę punktów życia, czyli pev_max_health!
 
Użycie tej, dedykowanego właśnie temu zabiegowi, zmiennej, nie tylko sprawi, że Twój plugin będzie działał razem z innymi ale także oszczędzi Ci tworzenia na nowo czegoś, co już jest zrobione, mianowicie pev_max_health!
Mało tego, obliczenie procent punktów życia danego gracza nie będzie stanowiło żadnego problemu:
 

new Float:hp, Float:max_hp;

pev(id, pev_health, hp);
pev(id, pev_max_health, max_hp);

new procent_hp = floatround(hp / max_hp * 100); // czyż nie prościej?

PS Pierwszy raz zalinkowałem nasze forumowe pevresearch  :)


Użytkownik 21977 edytował ten post 20.05.2014 18:03


#20 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 20.05.2014 19:54

Benio dlatego napisałem:

jeśli w żadnym innym pluginie nie zwiększasz max hp wynosi:

1. Max hp ( standardowa ilość hp z jaką się respisz/do jakiej mogą cię zleczyć automaty itd ) 100
2. Max hp ( wyznaczona przeze mnie ) 115

 

 

Dodam jeszcze że jeśli inny plugin nie ingeruje w pev_max_health i podmieni nasze hp na starcie rundy w późniejszym evencie to nadal wszystko będzie niekompatybilne niestety. Dlaczego? Bo wtedy musieli byśmy uznać iż to podmienione hp jest maksymalną ilością a pev_max_health będzie posiadało stare i oto w taki sposób bedziemy się rodzic z ponad 100% hp :(


  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych