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

Struktury


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

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.01.2011 21:22

*
Popularny

W temacie o enum R3X , goq i owner podjęli temat ale nie omówili go dokładnie :>
struktury tworzymy przy pomocy enum i operatora new pozwalają one w łatwy sposób w jednej tablicy przechowywać różne informacje Float,liczby całkowite,stringi według mnie po co rozbijać informacje o graczu na kilka różnych tablic jeśli można posługiwać się jedną ;)

Prosta struktura:


#include <amxmisc>

#define PLUGIN "DarkGL"
#define VERSION "1.0"
#define AUTHOR "Simple Structure"

enum player
{
userid,
deaths,
kills
}

new players[33][player]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test","test")
}

public test(id){
players[id][userid] = get_user_userid ( id)
players[id][deaths] = get_user_deaths(id);
players[id][kills] = get_user_frags(id);
client_print(id,print_chat,"Twoje userid to : %d | Masz %d fragow i %d dedow",players[id][userid],players[id][kills],players[id][deaths])
}


nie ma jednak możliwości zrobienia czegoś takiego:

#include <amxmisc>

#define PLUGIN "DarkGL"
#define VERSION "1.0"
#define AUTHOR "Simple Structure"

enum player{
origin[3]
}

new players[33][player]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test","test")
}

public test(id){
get_user_origin(id,players[id][origin])
client_print(id,print_chat,"Origin x,y,z : %d | %d | %d",players[id][origin][0],players[id][origin][1],players[id][origin][2])
}


chyba że zrobimy to tak:


#include <amxmisc>

#define PLUGIN "DarkGL"
#define VERSION "1.0"
#define AUTHOR "Simple Structure"

enum player{
origin[3]
}

new players[33][player]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test","test")
}

public test(id){
new iTmp[3];
get_user_origin(id,iTmp)
players[id][origin][0] = iTmp[0];
players[id][origin][1] = iTmp[1];
players[id][origin][2] = iTmp[2];
client_print(id,print_chat,"Origin x,y,z : %d | %d | %d",players[id][origin][0],players[id][origin][1],players[id][origin][2])
}


Przechowywanie wartości Float
z tym trzeba już kombinowac :)


#include <amxmisc>
#include <fun>

#define PLUGIN "DarkGL"
#define VERSION "1.0"
#define AUTHOR "Simple Structure"

enum player{
speed
}

new players[33][player]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test","test")
}

public test(id){
players[id][speed] = _:get_user_maxspeed(id);
client_print(id,print_chat,"Twoja predkosc to %f",Float:players[id][speed])
}

co robi znacznik _: zapraszm do tutoriala R3X na ten temat :)
Turorial _:

Stringi


#include <amxmisc>

#define PLUGIN "DarkGL"
#define VERSION "1.0"
#define AUTHOR "Simple Structure"

enum player{
nick[64]
}

new players[33][player]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /test","test")
}

public test(id){
new szName[64];
get_user_name(id,szName,charsmax(szName));
copy(players[id][nick],63,szName)
client_print(id,print_chat,"Twoj nick to %s",players[id][nick])
}


w linijce z instrukcja copy drugi parametr to ilosc znakow niestety nie da sie sprawdzic ile ma tablica zadeklarowana w enum
i to by było wszystko zachęcam do stosowania struktur w swoich pluginach
coś niejasne , piszcie :)
  • +
  • -
  • 17

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 28.01.2011 10:41

bardzo dobry sposób na zapisanie serii danych, m.in. o graczy, nic nie mówiące liczbowe indeksy zastępuje nazwami, trzeba uważać na stringi w takiej strukturze, bo wystarczy za dużo o 1 znak i nadpisuje dane za nimi bez błędu wykonania
  • +
  • -
  • 1

#3 Sharkmen

    Pomocny

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:70
  • GG:
  • Imię:Przemek
  • Lokalizacja:Byczyna
Offline

Napisano 28.01.2011 21:14

Bardzo ładny poradniczek przydał się :D
  • +
  • -
  • 0

Dołączona grafika


#4 Kaskader

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:103
  • Lokalizacja:Z PoLsKi
Offline

Napisano 18.03.2012 23:59

Da się wyzerować wszystkie zmienne w strukturze bez konieczności przypisywania im ręcznie zerowych wartości?
  • +
  • -
  • 0

#5 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 19.03.2012 14:43

Da się wyzerować wszystkie zmienne w strukturze bez konieczności przypisywania im ręcznie zerowych wartości?

A nie prościej po prostu wyzerować pętlą ?
  • +
  • -
  • 0

#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 19.03.2012 22:50

Czemu
new szName[64];
get_user_name(id,szName,charsmax(szName));
copy(players[id][nick],63,szName)

a nie
get_user_name(id,players[id][nick],63);

?
Tutaj chyba można od razu nick pobierać z "get_user_name", a nie ze zmiennej pomocniczej.
  • +
  • -
  • 0

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


#7 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 19.03.2012 23:54

ano mozna mozna by tez sprawdzić opcje

enum player{
        nick,id=64
}

tez powinno dzialac bo to wykorzystuje troche "ułomność" języka jakim jest pawn
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 Kaskader

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:103
  • Lokalizacja:Z PoLsKi
Offline

Napisano 20.03.2012 00:33

Da się wyzerować wszystkie zmienne w strukturze bez konieczności przypisywania im ręcznie zerowych wartości?

A nie prościej po prostu wyzerować pętlą ?


Nie za bardzo, ponieważ mam różne typ danych w enum. Nazwy też są różne, więc jak to zrobić za pomocą pętli?
  • +
  • -
  • 0

#9 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 21.07.2012 02:00

Da się wyzerować wszystkie zmienne w strukturze bez konieczności przypisywania im ręcznie zerowych wartości?

enum eTest {
	bool: 	bEnumVariable ,
	Float: 	fEnumVariable ,
			iEnumVariable
}

new arrayVariable[ eTest ]

public plugin_init(){
	
	new tmpArray[ eTest ];
	
	copy( arrayVariable , sizeof( arrayVariable ) , tmpArray );
}

  • +
  • -
  • 0

#10 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 04.01.2015 10:53

Pytanie, czy zamiana zwykłych zmiennych na struktury polepsza optymalizacje kodu ? Zmniejsza zużycie pamięci ? Główne założenie to statystyki gracza (7), jednak pewnie jeśli optymalizuje to w tym wypadku prawie wcale.. a jeśli większość mocy (nowy db_mod) zamienię na struktury ? +/- 400 zmiennych. Potrzebne mi ograniczenie zużycia pamięci, z powodu błędów stack error


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#11 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 04.01.2015 16:02

Zmiana na struktury nic nie zmieni, ponieważ dalej to zajmuje tyle samo miejsca. Pomóc może np zmiana wartości boolean na flagi/

Stack error dotyczy zmiennych lokalnych, a nie globalnych.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#12 KarlikAśki

    Wszechwidzący

  • Użytkownik

Reputacja: 30
Życzliwy

  • Postów:269
  • Imię:Jakub
  • Lokalizacja:Gdańsk
Offline

Napisano 04.01.2015 16:11

Dziekuje pomogłeś i w kompilacjii .


  • +
  • -
  • 0




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

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