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

[ROZWIĄZANE] Poprawność MoreHP


  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 BloodyKnife

    Życzliwy

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:37
  • Imię:Konrad
  • Lokalizacja:Kraków
Offline

Napisano 12.01.2012 20:19

Witam. prosiłbym o sprawdzenie poprawności tego kodu :
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <colorchat>
#include <cstrike>
#include <engine>
#include <fakemeta>


#define PLUGIN "More HP Mod"
#define VERSION "1.0.0"
#define AUTHOR "JestemSlepy"
#define NE_UA_VERSION "1.0.1"

new CSW_MAXAMMO[33]= {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1}
new cvar_enable
new cena_hp

public plugin_init() {

	  RegisterHam(Ham_Spawn, "player", "respawn", 1)
	  RegisterHam(Ham_Spawn, "player", "respawn2", 1)
	  register_plugin(PLUGIN, VERSION, AUTHOR)
	  set_task(120.0, "print",0,"a")
	  register_plugin("New-Era_UnlimitedAmmo", NE_UA_VERSION, "New-Era Scripting Team")
	  register_cvar("ne_uammo_version", NE_UA_VERSION, FCVAR_SPONLY)
	  cvar_enable= register_cvar("ne_uammo_enable", "1")
	  register_event("CurWeapon", "event_curweapon", "be", "1=1")
	  register_event("DeathMsg","func_death","a")
	register_forward(FM_CmdStart, "CmdStart");
	  cena_hp= register_cvar("cena_hp", "16000")
	  register_clcmd("say /kuphp", "buyhp")
}

public CmdStart(id, uc_handle)
{
	static moze_skoczyc;
	
	if(!is_user_alive(id) || !(get_user_flags(id)&ADMIN_LEVEL_H))
		return FMRES_IGNORED;
	
	new button = get_uc(uc_handle, UC_Buttons);
	new oldbutton = pev(id, pev_oldbuttons);
	new flags = pev(id, pev_flags);
	if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && moze_skoczyc & (1<<id))
	{
		moze_skoczyc &=  ~(1<<id)  
		new Float:velocity[3];
		pev(id, pev_velocity, velocity);
		velocity[2] = random_float(265.0,285.0);
		set_pev(id, pev_velocity, velocity);
	}
	else if(flags & FL_ONGROUND){
		moze_skoczyc |= (1<<id)
	}
		
	return FMRES_IGNORED;
}

public print(id){
client_print(0, print_chat, "[MoreHP] Mod stworzony przez JestemSlepy / Wersja 1.0.0")
}

public respawn(id)
{
		if(is_user_alive(id))
		{
				set_user_health (id, 10000)
				strip_user_weapons(id)
				give_item ( id, "weapon_m4a1" )
				ColorChat(id, GREEN, "[MoreHP] Dostałeś M4A1 i nieskończoność amunicji")
				cs_set_user_money ( id, 1, 1 )
		}
}

public func_death() set_task(3.0, "r_spawn", read_data(2))
public r_spawn(id) spawn(id)  

public event_curweapon(id)
{
	if(!get_pcvar_num(cvar_enable) || !is_user_alive(id))
		return PLUGIN_CONTINUE;
	
	new weaponID= read_data(2)
	if(weaponID==CSW_C4 || weaponID==CSW_KNIFE || weaponID==CSW_HEGRENADE || weaponID==CSW_SMOKEGRENADE || weaponID==CSW_FLASHBANG)
		return PLUGIN_CONTINUE;
	
	if(cs_get_user_bpammo(id, weaponID)!=CSW_MAXAMMO[weaponID])
		cs_set_user_bpammo(id, weaponID, CSW_MAXAMMO[weaponID])
	
	return PLUGIN_CONTINUE;
}

public respawn2(id)
{
		if(get_user_flags(id) & ADMIN_LEVEL_H)
		if(is_user_alive(id))
		{
				set_user_health (id, 12000)
				strip_user_weapons(id)
				give_item ( id, "weapon_m4a1" )
				ColorChat(id, GREEN, "[MoreHP] Dostałeś M4A1 i nieskończoność amunicji")
				cs_set_user_money ( id, 1, 1 )
				set_hudmessage ( 200, 100, 0, 0.2, 0.35, 2, 1.0, 10.0, 0.1, 0.2, 4 )
				show_hudmessage(id, "Korzystasz z konta V.I.P")
		}
}

public buyhp(id)
{
		if(get_user_flags(id) & ADMIN_LEVEL_H)
		if(!is_user_alive(id))
		{
				client_print(id,print_chat,"[MoreHP] Jestes martwy. Nie mozesz skorzystac z uslugi")
		}
		set_user_health(id,2000)
		cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(cena_hp))
		return PLUGIN_HANDLED
}

Jeżeli coś w kodzie wygląda na nie działające to prosiłbym o wytłumaczenie mi dlaczego.

Użytkownik BloodyKnife edytował ten post 12.01.2012 20:58

  • +
  • -
  • 0
W trakcie przygotowywania serwera CS:GO :)

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 12.01.2012 20:54

Plugin się nie kompiluje, więc sobie daruję dalsze sprawdzanie. Na pierwszy rzut oka: niska czytelność, 2 razy register_plugin.

Nie zamykasz nawiasu
cena_hp= register_cvar("cena_hp", "16000"

  • +
  • -
  • 1

#3 BloodyKnife

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:37
  • Imię:Konrad
  • Lokalizacja:Kraków
Offline

Napisano 12.01.2012 20:56

Mi się plugin kompiluje nie wiem w czym problem. Jeżeli chcesz mogę umieścić amxx pluginu.

@ Edit

A nie mój błąd umieściłem, wcześniejszy zapis sma pluginu, już poprawiam.
Teraz powinno się skompilować, dziękuję za zwrócenie uwagi.

Użytkownik BloodyKnife edytował ten post 12.01.2012 20:59

  • +
  • -
  • 0
W trakcie przygotowywania serwera CS:GO :)

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 12.01.2012 20:58

dopisałem w czym problem:
cena_hp= register_cvar("cena_hp", "16000"

:) niby drobiazg
  • +
  • -
  • 0

#5 BloodyKnife

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:37
  • Imię:Konrad
  • Lokalizacja:Kraków
Offline

Napisano 12.01.2012 21:04

No niby taki drobiazg ;P
Nie mam z kim sprawdzić tego więc mam pytanie czy zakup HP będzie działał poprawnie. Czyli czy będzie tylko mógł gracz z ADMIN_LEVEL_H zakupić dodatkowe HP
  • +
  • -
  • 0
W trakcie przygotowywania serwera CS:GO :)

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 13.01.2012 06:44

Teraz śmiga

W buyHP potrzebujesz klamer {}, bo aktualnie to wygląda tak:
public buyhp(id)
{
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id))
		{
			client_print(id,print_chat,"[MoreHP] Jestes martwy. Nie mozesz skorzystac z uslugi")
		}
	}
	set_user_health(id,2000)
	cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(cena_hp))
	
	return PLUGIN_HANDLED
}
a pewnie chciałbyś, żeby warunek pilnował otrzymania HP; trzeba też przerwać wywołanie funkcji return`em jak gracz jest martwy
public buyhp(id)
{
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(!is_user_alive(id))
		{
			client_print(id,print_chat,"[MoreHP] Jestes martwy. Nie mozesz skorzystac z uslugi");
			return PLUGIN_HANDLED
		}
		set_user_health(id,2000)
		cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(cena_hp))
	}
	return PLUGIN_HANDLED
}

Dość kiepsko, że nie uwzględniłeś przypadku, że gracz nie ma wystarczająco dużo kasy. Można doładowywać HP bez przerwy,nawet z zerem na koncie.



Funkcja respawnu powinna być jedna i łączyć funkcjonalność obu aktualnych.
RegisterHam(Ham_Spawn, "player", "respawn", 1)
RegisterHam(Ham_Spawn, "player", "respawn2", 1) //<- Do śmieci
public respawn(id)
{
	if(!is_user_alive(id))
			return HAM_IGNORED;
	strip_user_weapons(id)
	give_item ( id, "weapon_m4a1" )
	
	cs_set_user_money ( id, 1, 1 )
	
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{	
		set_user_health (id, 12000)
		
		set_hudmessage ( 200, 100, 0, 0.2, 0.35, 2, 1.0, 10.0, 0.1, 0.2, 4 )
		show_hudmessage(id, "Korzystasz z konta V.I.P")
	}else
	{
		set_user_health (id, 10000)
		
	}
	ColorChat(id, GREEN, "[MoreHP] Dostałeś M4A1 i nieskończoność amunicji")
	return HAM_IGNORED;
}
W innym przypadku gracz VIP otrzyma 2 komunikaty.
  • +
  • -
  • 1

#7 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 13.01.2012 14:06

Dodam jeszcze
public print(id)
{
	client_print(0, print_chat, "[MoreHP] Mod stworzony przez JestemSlepy / Wersja 1.0.0")
}
ten public nie posiada id więc zamiast id daj ()
żeby public posiadał id musisz zrobić pętle.
public print()
{
	client_print(0, print_chat, "[MoreHP] Mod stworzony przez JestemSlepy / Wersja 1.0.0")
}
Jak masz
  set_task(120.0, "print",0,"a")
i chcesz żeby się powtarzało to
set_task(120.0, "print",0,_,_,"b")
Flaga "b" odpowiada za powtarzanie się taska "a" też , ale po uszach "" musisz dać ,ilość powtórzeń
Co do respawnu nie jestem pewniem ale spawn(id) buguje się czasem spawn(id) zamień na
ExecuteHam(Ham_CS_RoundRespawn, id)
Jak masz Amxx-Studio to żeby kod wyglądał 'ładniej'
Tools -> Indenter ;)
  • +
  • -
  • 1

If you can dream it, you can do it.


#8 BloodyKnife

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:37
  • Imię:Konrad
  • Lokalizacja:Kraków
Offline

Napisano 13.01.2012 14:41

Dziękuję bardzo :)
Widzę, że jeszcze dużo nauki przede mną ^^ Przynajmniej już wiem co źle zrobiłem i na przyszłość postaram się zapamiętać :D
  • +
  • -
  • 0
W trakcie przygotowywania serwera CS:GO :)

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 13.01.2012 14:52

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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