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.
|
Zmienna przechowująca pięć rzeczy.
#1
Napisano 21.09.2010 11:18
Jak zrobić, aby gracz mógł przechować pięć zmiennych (tak jakby itemów) i że jak wpisze komendę to mu się wyświetli menu z tymi itemami...?
#2
Napisano 21.09.2010 13:46
new tablica[5];
#3
Napisano 21.09.2010 13:55
I wykorzystanie to np:
tablica[0] = 1
tablica[1] = 1?
#4
Napisano 21.09.2010 13:57
Użycie:
aTablica[id][0] = 1;
#5
Napisano 21.09.2010 13:59
new tablica[33][5];
tablica[id] = {1,2,3,4,5};
wtedy :
tablica[id][0] == 1
tablica[id][1] == 2
tablica[id][2] == 3
itd.
#6
Napisano 21.09.2010 14:12
Może inaczej :
new tablica[33][5];
tablica[id] = {1,2,3,4,5};
wtedy :
tablica[id][0] == 1
tablica[id][1] == 2
tablica[id][2] == 3
itd.
tablica[id] = {1,2,3,4,5}; Gdzie to dać i po co to?
Rozumiem, że maks posunięcia to:
tablica[id][0] == 1
tablica[id][1] == 2
tablica[id][2] == 3
tablica[id][3] == 4
tablica[id][4] == 5
Maks mogę tak zrobić?
I jak jeszcze do tego dodać, że jak gracz dostanie jakiś item to do tego właśnie dobierana jest automatycznie pierwsza wolna zmienna? Czyli np. Gracz ma item ze zmeinną coś[id] i równocześnie dobiera do tego tablica[id][0] = 1?
Użytkownik Screeaam... edytował ten post 21.09.2010 14:15
#7
Napisano 21.09.2010 14:15
#8
Napisano 21.09.2010 14:22
I jak jeszcze do tego dodać, że jak gracz dostanie jakiś item to do tego właśnie dobierana jest automatycznie pierwsza wolna zmienna? Czyli np. Gracz ma item ze zmeinną coś[id] i równocześnie dobiera do tego tablica[id][0] = 1?
#9
Napisano 21.09.2010 14:52
new aTablica[33][5];
for(new i = 0; i < 5; i++)
{
if(!aTablica[id][i])
return i;
}
Można tak, a można jeszcze dorobić kolejną zmienną i ją inkrementować przy dostaniu itemu i jeśli zmienna == 5 resetujemy ją i jedziemy od nowa, bądź blokujemy danie kolejnego itemu.
Druga metoda jest zdecydowanie optymalniejsza.
Użytkownik Owner123 edytował ten post 21.09.2010 14:53
#10
Napisano 21.09.2010 15:10
new aTablica[33][5];
for(new i = 0; i < 5; i++)
{
if(!aTablica[id][i])
return i;
}
Można tak, a można jeszcze dorobić kolejną zmienną i ją inkrementować przy dostaniu itemu i jeśli zmienna == 5 resetujemy ją i jedziemy od nowa, bądź blokujemy danie kolejnego itemu.
Druga metoda jest zdecydowanie optymalniejsza.
Możesz podać przykład z drugim sposobem?
#11
Napisano 21.09.2010 15:35
new g_aTablica[33][5];
new g_iItemNum[33];
AwardItem(id, itemnum = 0)
{
//aby nie dostać Index out of bounds
if(g_iItemNum[id] >= 5)
return;
// zdobywa item o jakimś id
g_aTablica[id][g_iItemNum[id]] = itemnum;
//inkrementujemy zmienną kontrolną
g_iItemNum[id]++;
return;
}
#12
Napisano 21.09.2010 15:46
g_iItemNum[id]
Zmienna przechowująca itemy / nazwy itemków?
#13
Napisano 21.09.2010 15:50
id itemów przechowuję g_aTablica[id]
Użytkownik Owner123 edytował ten post 21.09.2010 15:50
#14
Napisano 21.09.2010 15:57
#15
Napisano 21.09.2010 16:14
new g_aTablica[33][5];
new g_iItemNum[33];
AwardItem(id, itemnum = 0)
{
//aby nie dostać Index out of bounds
if(g_iItemNum[id] >= 5)
return;
//jakis switch z 20 itemami
// zdobywa item o jakimś id
g_aTablica[id][g_iItemNum[id]] = itemnum;
//inkrementujemy zmienną kontrolną
g_iItemNum[id]++;
return;
}
DropItem(id)
{
//resetujemy zmienne dotyczące itemów
//teraz nie mamy żadnego itemu, wiec resetujemy
g_iItemNum[id] = 0;
//resetujemy również naszą tablice z id itemow
for(new i = 0; i < 5; i++)
g_aTablica[id][i] = 0;
}
Ew. można wywalić switcha za to zrobić tablice gracza z 20 elementami (po 1 dla kazdego itemu)
new g_aTablica[33][20];
new g_iItemNum[33];
AwardItem(id, itemnum = 0)
{
//aby nie dostać Index out of bounds
if(g_iItemNum[id] >= 5)
return;
// zdobywa item o jakimś id
g_aTablica[id][itemnum] = 1;
//inkrementujemy zmienną kontrolną
g_iItemNum[id]++;
return;
}
DropItem(id)
{
//teraz nie mamy żadnego itemu, wiec resetujemy
g_iItemNum[id] = 0;
//resetujemy również naszą tablice z id itemow
for(new i = 0; i < 20; i++)
g_aTablica[id][i] = 0;
}
Użytkownik Owner123 edytował ten post 21.09.2010 16:16
#16
Napisano 21.09.2010 16:16
#17
Napisano 21.09.2010 16:18
Ew. pokaż swoją funkcje od dostawania itemów.
Użytkownik Owner123 edytował ten post 21.09.2010 16:18
#18
Napisano 21.09.2010 16:38
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych