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] 10% szans na otrzymaniu broni na spawnie.


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

#1 Mamorr

    Zaawansowany

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:97
  • Imię:Dawid
  • Lokalizacja:Bzk
Offline

Napisano 27.01.2014 17:34

Witam, zaczynam swoją przygodę ze scriptingiem, mój pierwszy plugin : 

 

#include <amxmodx>
#include <HamSandwich>
#include <Fakemeta>
new fm_give_item
public plugin_init ()
{
	register_plugin("szansa_na_bron", "1.0", "czy-bit")
	RegisterHam(Ham_Spawn, "player", "Fw_PlayerSpawnPost", 1)
}
public Fw_PlayerSpawnPost(id)
{
	if(random_num(1 , 10) == 1)
	is_user_alive(id)
	fm_give_item(id, "weapon_hegrenade"); //Gracz ma 10% szans aby otrzymac granat wybuchowy
		client_print(id, print_chat, "Dostales granata!")
	return HAM_HANDLED
}

Dlaczego nie chce się skompilować?

 


Użytkownik Mamorr edytował ten post 27.01.2014 17:34

  • +
  • -
  • 0

#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 27.01.2014 17:50

Pozwolę sobie najpierw nieco posprzątać kod:

#include <amxmodx>
#include <HamSandwich>
#include <Fakemeta>

new fm_give_item

public plugin_init()
{
	register_plugin("szansa_na_bron", "1.0", "czy-bit")
	RegisterHam(Ham_Spawn, "player", "Fw_PlayerSpawnPost", 1)
}

public Fw_PlayerSpawnPost(id)
{
	if(random_num(1 , 10) == 1)
	is_user_alive(id)
	fm_give_item(id, "weapon_hegrenade"); //Gracz ma 10% szans aby otrzymac granat wybuchowy
		client_print(id, print_chat, "Dostales granata!")
	
	return HAM_HANDLED
}

Warunek:

if(random_num(1 , 10) == 1)

można zapisać prościej i wydajniej przy użyciu funkcji random, która idealnie się nadaje do szans procentowych:

if(!random(10))

 
Przyjrzyjmy się następującym linijkom:

	if(!random(10))
	is_user_alive(id)
	fm_give_item(id, "weapon_hegrenade"); //Gracz ma 10% szans aby otrzymac granat wybuchowy
		client_print(id, print_chat, "Dostales granata!")

Po sprawdzeniu ifem szansy procentowej, wykonujesz drugi warunek, ale już poza ifem i jako funkcję.
Drugi warunek, mianowicie is_user_alive winien być wewnątrz ifa, w tym przypadku połączony z poprzednim koniunkcją:

	if(!random(10) && is_user_alive(id)){
		fm_give_item(id, "weapon_hegrenade"); //Gracz ma 10% szans aby otrzymac granat wybuchowy
		client_print(id, print_chat, "Dostales granata!");
	}

Korzystając z funkcji biblioteki fakemeta_util, fm_give_item, nie możesz stworzyć zmiennej o nazwie identycznej do nazwy funkcji, z której korzystasz, która to zmienna jest zresztą zbędna.

Dodatkowo, musisz zmienić nagłówek, by nie załączać fakemeta, lecz wspomnianą fakemeta_util, z której to korzystasz.

 

Ostatecznie, kod winien przyjąć postać typu:

#include <amxmodx>
#include <fakemeta_util>
#include <HamSandwich>

public plugin_init()
{
	register_plugin("szansa_na_bron", "1.0", "czy-bit")
	RegisterHam(Ham_Spawn, "player", "Fw_PlayerSpawnPost", 1)
}

public Fw_PlayerSpawnPost(id)
{
	if(!random(10) && is_user_alive(id)){
		fm_give_item(id, "weapon_hegrenade"); //Gracz ma 10% szans aby otrzymac granat wybuchowy
		client_print(id, print_chat, "Dostales granata!");
	}
	
	return HAM_HANDLED
}

Użytkownik Benio101 edytował ten post 27.01.2014 17:54
dodany jeden przykładowy kod


#3 Mamorr

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:97
  • Imię:Dawid
  • Lokalizacja:Bzk
Offline

Napisano 27.01.2014 17:55

Dzięki wielkie, jeszcze praktycznie nic nie ogarniam i trochę namieszałem :D


  • +
  • -
  • 0

#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 27.01.2014 19:39

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png 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