←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

O co chodzi z new cos [33]

  • +
  • -
Savander - zdjęcie Savander 19.09.2010

Witam mam pytanie dotyczące np tego:
new msg[128]


o co chodzi z tymi liczbami w [] ?? Mógł by mi ktoś wytłumaczyć? :)
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 19.09.2010

Jest to wielkość tablicy, a dokładniej liczba komórek .
W jednej komórce np mieści się jeden znak char np: a .
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 19.09.2010

Tablice to zbiór zmiennych.

new a1 = 1;
new a2 = 5;

można połączyć w tablicę

new a[2];
a[0] = 1;
a[1] = 5;

przez co do wielu danych mamy dostęp z jednej zmiennej, co łatwiej wykorzystać przy tworzeniu algorytmu; zamiast szukać odpowiedniej nazwy zmiennej wystarczy policzyć indeks w tablicy
Odpowiedz

hardbot - zdjęcie hardbot 19.09.2010

:D Podałem ci przykład :D
i do tego możesz zrobić


#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

new cos[33];
new rundy;

public plugin_init()
{
register_plugin("Test", "1", "[H]ARDBO[T]")

register_logevent("Restart", 2, "1=Restart_Round_(1_second)");
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");

register_clcmd("say /test", "Testowa")
}
public Restart()
{
rundy = 0;
}
public NowaRunda(id)
{
rundy++;

if(rundy == 4)
{
cos[id] = false;
}
}
public Testowa(id)
{
if(cos[id])
{
cos[id] = true;
pev(id, pev_health,200)
client_print(id, print_chat,"Super, dostales 200HP!")
}
else
{
client_print(id, print_chat,"heh, Mozesz tego uzyc raz na 4 rundy.")
}
return PLUGIN_CONTINUE
}


Czyli wnioskować z tego, cos[33] = zmienna pod ID
którya wykrywa u gracza jeśli gracz wziął sobie to HP to dopiero z tego kodu wynika co napiasałem że będzie mógł dopiero wziąć za 4 rundy to HP :D
Odpowiedz

  • +
  • -
Savander - zdjęcie Savander 19.09.2010

Czyli zamiast pisać wiele razy jakiś algortym np

a[0]
a[1] i tak dalej, to mogę to napisac new a[2]??


Aha, i co odpowiada za ilość rund? Wiem jestem nowy w tym dlatego się pytam :)
Odpowiedz

Seba - zdjęcie Seba 19.09.2010

a[0]
a[1] i tak dalej, to mogę to napisac new a[2]??

Nie.

Aha, i co odpowiada za ilość rund? Wiem jestem nowy w tym dlatego się pytam :)

Przykro mi, ale już widać że programistą nie zostaniesz. Nie każdy się do tego nadaje ;)
Odpowiedz

  • +
  • -
Savander - zdjęcie Savander 19.09.2010

HEEHH :P, i tak po próbuje :P No ale no xD Każdy od czegoś zaczynał ;/
Odpowiedz

Seba - zdjęcie Seba 19.09.2010

Każdy od czegoś zaczynał ;/

Od przeczytania tutoriali w internecie oraz próbę zinterpretowania prostych kodów. Nie od głupich pytań na forum.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.09.2010

if(cos[id])
        {
                cos[id] = true;
                pev(id, pev_health,200)
                client_print(id, print_chat,"Super, dostales 200HP!")
        }


bezwzglednie ten kod zadziala tak jak tego chciales hardbot
Odpowiedz

Screeaam... - zdjęcie Screeaam... 19.09.2010

Aha, i co odpowiada za ilość rund? Wiem jestem nowy w tym dlatego się pytam :)



public NowaRunda(id) // Ten event trzeba zarejestrować w plugin_init, włącza się gdy następuje nowa runda (Po freeze chyba)
{
rundy++; // Dodaj jeden do zmiennej "rundy", na początku jest rundy = 0, czyli jak doda to będzie 1.
}


Więc jeżeli cztery razy nowa runda będzie to zmienna "rundy" będzie miała wartość 4 (runda == 4)
Odpowiedz

hardbot - zdjęcie hardbot 19.09.2010

Nie rozumiem twojej wypowiedzi Goq?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 19.09.2010

set_pev(id, pev_health,200.0)
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.09.2010

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

new cos[33];
new rundy;

public plugin_init()
{
        register_plugin("Test", "1", "[H]ARDBO[T]")
        
        register_logevent("Restart", 2, "1=Restart_Round_(1_second)");
        register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
        
        register_clcmd("say /test", "Testowa")
}
public Restart()
{
        rundy = 0;
}
public NowaRunda(id)
{
        rundy++;
        
        if(rundy == 4)
        {
                cos[id] = false;
        }
}
public Testowa(id)
{
        if(cos[id])
        {
                cos[id] = true;
                pev(id, pev_health,200)
                client_print(id, print_chat,"Super, dostales 200HP!")
        }
        else
        {
                client_print(id, print_chat,"heh, Mozesz tego uzyc raz na 4 rundy.")
        }
        return PLUGIN_CONTINUE
}

wiec tak ustawiasz zmienna na false ale sprawdzasz czy ma ona wartosc true ktorej nigdzie nie ustawiasz bo warunek sie nie wykona dodatkowo juz w warunku przypisujesz tam true czyli "jesli wartosc to prawda to nie zmieniaj jej" powinien tam byc wykrzyknik w if'ie :D

pozatym twoj kod przypisze do zmiennej cos[id] false tylko jesli bedzie to 4 runda potem juz nie powinno byc gdzies resetowanie zmiennej albo sprawdzanie reszty z dzielenia
i do tego twoj event nie ma parametru id a ty go dales czyli ma wartosc 0
dodatkowo przy inicjalizacji kazdy element tablicy ma wartosc false wiec plugin nic nie zrobi tak naprawdę
Odpowiedz

hardbot - zdjęcie hardbot 19.09.2010

:wstyd: racja.
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 19.09.2010

if(cos[id])
 {
       cos[id] = true;
Gdzie logika ?
Jeżeli prawda ustaw prawda ;>
Odpowiedz

hardbot - zdjęcie hardbot 19.09.2010

to czyli :D

public Testowa(id)
{
cos[id] = true;
if(cos[id])
{

set_pev(id, pev_health,200.0)
client_print(id, print_chat,"Super, dostales 200HP!")
}
else
{
client_print(id, print_chat,"heh, Mozesz tego uzyc raz na 4 rundy.")
}
return PLUGIN_CONTINUE
}
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 19.09.2010

powiedzmy, że do 3 razy sztuka :P ale pewnie i 4 próbę zobaczymy
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 19.09.2010

O ile dobrze myślę to:
public Testowa(id)
{
cos[id] = true;
if(cos[id])
{

set_pev(id, pev_health,200.0)
client_print(id, print_chat,"Super, dostales 200HP!")
}
else
{
client_print(id, print_chat,"heh, Mozesz tego uzyc raz na 4 rundy.")
}
return PLUGIN_CONTINUE
}

znaczy tyle co to:
public Testowa(id)
{
set_pev(id, pev_health,200.0)
client_print(id, print_chat,"Super, dostales 200HP!")

return PLUGIN_CONTINUE
}

:ganja:
Odpowiedz

  • +
  • -
Change - zdjęcie Change 19.09.2010

cos[id] = true;
if(cos[id])


wtf-.-
Użytkownik Change edytował ten post 19.09.2010 18:58
Odpowiedz

  • +
  • -
kyku - zdjęcie kyku 19.09.2010

ej nupki nupki..
#include <amxmodx>
#include <fakemeta>

new bool:cos[33];
new rundy;

public plugin_init()
{
	register_plugin("Test", "1337", "[H]ARDBO[T] nuub")
	
	register_logevent("Restart", 2, "1=Restart_Round_(1_second)");
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
	
	register_clcmd("say /test", "Testowa")
}
public Restart()rundy = 0;
public NowaRunda()if(++rundy == 4)for(new i;i<33;i++)cos[i]=false;
public Testowa(id)
{
	
	if(!cos[id])
	{
		cos[id] = true;
		set_pev(id, pev_health,200.0)
		client_print(id, print_chat,"Super, dostales 200HP!")
	}
	else client_print(id, print_chat,"heh, Mozesz tego uzyc raz na 4 rundy.")
	return PLUGIN_CONTINUE
}

Dodano 19 wrzesień 2010 - 20:41:
z reszta i tak nie bedzie dobrze dzialalo bo resetuje wszystkim w 4 rundzie niezaleznie od tego czy uzyli czy nie (i kiedy)

Dodano 19 wrzesień 2010 - 20:44:
#include <amxmodx>
#include <fakemeta>

new cos[33];

public plugin_init()
{
        register_plugin("Test", "1337", "[H]ARDNOO[B]")
        
        register_logevent("Restart", 2, "1=Restart_Round_(1_second)");
        register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
        
        register_clcmd("say /test", "Testowa")
}
public Restart()for(new i;i<33;i++)if(cos[i])cos[i]=0;
public NowaRunda()for(new i;i<33;i++)if(cos[i])cos[i]--;
public Testowa(id)
{
        
        if(!cos[id])
        {
                cos[id] = 4;
                set_pev(id, pev_health,200.0)
                client_print(id, print_chat,"Super, dostales 200HP! Nastepny raz mozesz uzyc za 4 rundy!")
        }
        else client_print(id, print_chat,"Komende bedziesz mogl uzyc za %d rund", cos[id])
        return PLUGIN_CONTINUE
}
ale to juz powinno dzialac dobrze :P
Użytkownik kyku edytował ten post 19.09.2010 19:39
Odpowiedz