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

XVary - Co to jest ?


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

#1 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 26.09.2010 11:11

Dzisiejszy tutorial będzie poświęcony rzadko spotykanym - XVarom !

Co to jest?
Jest to specjalny rodzaj zmiennej, która może być obsługiwana z poziomu innego pluginu przy użyciu odpowienich natyw.
Te natywy to:
/* Sprawdza czy XVar o podanej nazwie istnieje. */
native xvar_exists( const name[] );

/* Zwraca unikalne ID XVara. Jeśli nie istnieje zwraca -1. */
native get_xvar_id( const name[] );

/* Zwraca liczbę naturalna XVara. Id to wartość zwrócona przez get_xvar_id(). */
native get_xvar_num( id );

/* Zwraca liczbę rzeczywistą XVara. Id to wartość zwrócona przez get_xvar_id(). */
native Float:get_xvar_float( id );

/* Ustawia wartosc dla XVara. Id to wartość zwrócona przez get_xvar_id(). */
native set_xvar_num( id, value = 0 );

/* Ustawia liczbę rzeczywistą dla XVara. Id to wartość zwrócona przez get_xvar_id(). */
native set_xvar_float( id, Float:value = 0.0 );

Do tworzenia XVara służy słowo public.
Wygląda to mniej więcej tak:
public XvarExample;
public Float:XvarExampleFloat;
public bool:XvarExampleBool;

XVary mogą być tylko globalne, w przypadku próby użycia XVara jako zmienną lokalną, kompilator zasygnalizuję błąd.

Jak z tego korzystać ?
Najprostsze użycie XVarów wygląda tak:
#1
#include <amxmodx>

public XvarExample; /* Tworzymy xvary różnego typu */
public Float:XvarExampleFloat; /* Tutaj mamy Floata */
public bool:XvarExampleBool; /* A tutaj Boola */

public plugin_init()
{
register_plugin("XVar Tutorial", "1.0.0", "Owner dla AMXX.PL")
XvarExample = 100;
XvarExampleBool = true;
XvarExampleFloat = 1337.666;
}

#2
#include <amxmodx>

new g_pXvarPointers[3];
new bool:g_bXvarValue;
new Float:g_fXvarValue;
new g_iXvarValue;

public plugin_init()
{
register_plugin("XVar Tutorial", "1.0.0", "Owner dla AMXX.PL")
if(xvar_exists("XvarExample"))
g_pXvarPointers[0] = get_xvar_id("XvarExample");
if(xvar_exists("XvarExampleBool"))
g_pXvarPointers[1] = get_xvar_id("XvarExampleBool");
if(xvar_exists("XvarExampleFloat"))
g_pXvarPointers[2] = get_xvar_id("XvarExampleFloat");

g_iXvarValue = get_xvar_num(g_pXvarPointers[0]);
g_bXvarValue = bool:get_xvar_num(g_pXvarPointers[1]);
g_fXvarValue = get_xvar_float(g_pXvarPointers[2]);

}


Zaś ustawianie wartości wygląda następująco:
// ustawia wartośc dla liczby całkowitej
set_xvar_num( g_pXvarPointers[0], 10 );

// ustawia wartość dla zmiennej logicznej
set_xvar_num( g_pXvarPointers[1], false );

// ustawia wartość dla liczby rzeczywistej
set_xvar_float( g_pXvarPointers[2], 19.6 );


Podwojenia
Podwojenia są to 2 Xvary o takiej samej nazwie. Gdy chcemy z poziomu innego pluginu ustawić wartość dla niego, wartość Xvara zostanie zmieniona w tym pluginie, który jest wyżej w plugins.ini, poniżej przykład:
// To jest #1 plugin w plugins.ini

#include <amxmodx>

public bool:ShowRoundMessage;

public plugin_init()
{
register_plugin("New Round Displayer", "1.0.0", "Owner dla AMXX.PL");
register_event("HLTV", "NewRound", "a", "1=0", "2=0");
}

public NewRound()
{
if(ShowRoundMessage)
client_print(0, print_center, "Round Started");
}

// To jest #2 plugin w plugins.ini

#include <amxmodx>

public bool:ShowRoundMessage;

public plugin_init()
{
register_plugin("New Round Displayer", "1.0.0", "Owner dla AMXX.PL");
register_event("HLTV", "NewRound", "a", "1=0", "2=0");
}

public NewRound()
{
if(ShowRoundMessage)
client_print(0, print_center, "Round Started");
}

Zgadza się, te 2 pluginy są identyczne. Aby pokazać jak działa podwojenie potrzebny jest #3 plugin, który zmieni wartość naszego XVara:
#include <amxmodx>

new g_pXvar;

public plugin_init()
{
register_plugin("New Round Displayer Enabler", "1.0.0", "Owner dla AMXX.PL");
if((g_pXvar = get_xvar_id("ShowRoundMessage")) != -1)
set_xvar_num(g_pXvar, true);
}


Po rozpoczęciu rundy, pokaże się tylko jeden komunikat - co za tym idzie, wartość została zmieniona tylko dla pluginu #1.

Na zakończenie
To chyba wszystko jeśli chodzi o Xvary. W razie niejasności pisać a postaram się jak najszybciej to poprawić.
  • +
  • -
  • 4

#2 kyku

    Wszechmogący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 28.09.2010 14:38

ja tam wole stare dobre cvary :P

Dodano 28 wrzesień 2010 - 15:38:
ale dobra rzecz gdy ktos nie chce by mozna bylo edytowac ich za pomoca komendy

Dodano 28 wrzesień 2010 - 20:02:
omg .. dodaj zrodlo (alliedmods..)
  • +
  • -
  • 0

#3 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 29.09.2010 00:53

Bardzo ciekawe zastosowanie może to mieć, np. gdy ktoś nie chce podawać sma pluginu, ale dać możliwość ludziom edytować tenże plugin.
  • +
  • -
  • 0

#4 Owner123

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 16.10.2010 18:42

To że kod jest podobny nie oznacza że zerżnięty ... Pisałem ręcznie na podstawie tutka który jest na alliedmods ;s
  • +
  • -
  • 0




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

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