Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2018-08-27, 18:07


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

Siema! My?l? nad tym jak zrobi? system pojazd?w(wszystkich) czytanych z bazy mysql.
I teraz tak:
-Pojazdy ma tworzy? administrator(pozycja administratora)
-Ka?dy pojazd jest przypisany albo do frakcji albo do konkretnego gracza.
I teraz pytania:
Jest mo?liwo?? przypisania UID do konkretnego pojazdu na mapie?
Jak by?cie to rozkminili w moim przypadku? Jako? nie mam wizji jak si? za to zabra?.


ps. Dobra mam pomys? :) Tworzy? przez zmienna pojazdy, typu UID = CreateVehicle
tylko teraz pojawia si? problem :D jak tworzy? zmienn? za ka?dym razem inn? o UID :D

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-27, 22:29


rufijok







Wiek: 27
Na forum: 3685 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 240

Respekt: 75,3

nie zrobisz dynamicznie zmiennych, za to mo?esz u?y? tablicy i z ka?dym stworzonym pojazdem zwi?ksza? index o 1

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-28, 08:13


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

Popowiesz mi jak to zrobi? ?

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-28, 12:10


rufijok







Wiek: 27
Na forum: 3685 dni
Posty: 54
Nick w MP: [STK]Slasher

Piwa: 240

Respekt: 75,3

Kod:

new IndexPojazdow;

enum E_Pojazdy{
pojazd,
model,
wlasciciel,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:PosR,
kolor1,
kolor2
};
new Pojazdy[][E_Pojazdy];

stock TworzeniePojazdow(){ // to wywolujesz w OnGameModeInit
for(new i; i < IndexPojazdow; i++){
Pojazdy[i][pojazd] = CreateVehicle(Pojazdy[i][model], Pojazdy[i][PosX], Pojazdy[i][PosY], Pojazdy[i][PosZ], Pojazdy[i][PosR], Pojazdy[i][kolor1], Pojazdy[i][kolor2], -1);
}
return 1;
}


tutaj masz samo tworzenie pojazdow bez bazy, musialbys jeszcze przed tym zrobic wypelnianie tej tablicy danymi z mysql, a IndexPojazdow na poczatku oznaczalby ilosc wierszy w tabeli z pojazdami w MySQL.
Przy samej komendzie z dodawaniem auta graczowi/frakcji wypelniasz kolejny index w tablicy, a zmienna IndexPojazdow inkrementujesz (++).
No i na koncu jeszcze tylko zapis, ale to juz sam rozkminisz ;)

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
carl0987
Wysłany: 2018-08-28, 19:05


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

A wi?c warto?ci tabeli wygl?daj? tak:


teraz na g?rze mapy stworzy?em:
Pawn

new IndexPojazdow;
enum E_Pojazdy
{
    UID,
    model,
    ovner,
    FloatPosX,
    FloatPosY,
    FloatPosZ,
    FloatPosR,
    kolor1,
    kolor2,
    przebieg
};
new Pojazdy[][E_Pojazdy];

Nast?pnie zabra?em si? za samo wczytywanie pojazd?w z bazy tak b?dzie dla mnie na ten moment najlepiej :)
W ongamemodeint da?em:
Pawn
    new query;
    mysql_format(SQL_IDquerysizeof query"SELECT * FROM cars");
    mysql_tquery(SQL_IDquery "WczytywaniePojazdow");

i tutaj jest b??d bo co? nie tak sformatowa?em mo?ecie mi podpowiedzie? :)
Nast?pnie w calbacku WczytywaniePojazdow da?em:
Pawn
new iloscpojazdow cache_num_rows();
    iloscpojazdow=IndexPojazdow;
    for(new iIndexPojazdowi++){
    Pojazdy[i][UID] = CreateVehicle(Pojazdy[i][model], Pojazdy[i][PosX], Pojazdy[i][PosY], Pojazdy[i][PosZ], Pojazdy[i][PosR], Pojazdy[i][kolor1], Pojazdy[i][kolor2], -1);
    }

I w ten spos?b wed?ug mnie powinno wczytywa? pojazdy potem trzeba bd sprawdza? po UID czy pojazd nale?y do gracza lub frakcji :)

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-08-28, 23:46


Robson04







Wiek: 23
Na forum: 3183 dni
Posty: 58
Nick w MP: Robson04

Piwa: 512

Respekt: 60

Nie ma takiego czego? jak przypisywanie UID do pojazdu.
Nie ma ?adnego Streamera pojazd?w.
Poza tym kod jest bez sensu.
Pawn

#define MAX_CARS 100
enum E_VEHICLES {

    SAMPID,
    OWNER,
      model,
    Float:XYZ[3],
    Float:ROT,
    Color[2],

    //inne
    PRZEBIEG    
};
new VehData[MAX_CARS][E_VEHICLES];

public OnGameModeInit() {
    ZaladujPojazdy(); //Wczytuje wszystkie pojazdy
    return 1;
}


//Funkcje:
ZaladujPojazdy() {
    //nie musisz formatowa? query, gdy nie wysy?asz zapytania/aktualizowania do bazy danych z zmiennymi.
    mysql_tquery(TWOJA_BAZA"SELECT * FROM cars""MYSQL_Pojazdy");
    return 1;
}

forward MYSQL_Pojazdy();
public MYSQL_Pojazdy() {
    for(new icache_num_rows(); ji++)
    {
        /*
            WA?NE, 'i' TO JEST TWOJE UID POJAZDU, TAK WIEC ZBEDNE JEST PISANIE UID W ENUMIE.
        */
            VehData[i][SAMPID] = CreateVehicle(VehData[i][model], VehData[i][XYZ][0], VehData[i][XYZ][1], VehData[i][XYZ][2], VehData[i][ROT], VehData[i][COLOR][0], VehData[i][COLOR][1], -10);
    }
    printf("przyk?ad: za?adowano %i pojazd?w!"cache_num_rows());
    printf("zostaw piwo Robsonowi je?eli pom?g?! :)");
    return 1;
}


W enumie mo?esz u?y? [], czyli niesko?czono?? tablic, ale wed?ug mnie to jest zb?dne i przy sprawdzaniu p?tla nie mia?aby ko?ca.

//Poza tym, po co od razu po za?adowaniu serwera spawnujesz pojazd?
Przypominam, ?e SAMP ma limit pojazd?w. Najlepiej by?oby zrobi? to tak, ?e ?adujesz wszystkie dane pojazd?w do tablic i potem gracz sobie wybiera czy chce spawnowa? pojazd czy nie.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
carl0987
Wysłany: 2018-08-29, 16:32


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

No tak, a co z pojazdami dla zwyk?ych graczy albo z pojazdami firmowymi ? Mog? ewentualnie sprawdzi? czy pojazd jest firmowy lub dla zwyk?ego gracza jakim? if'em w ongamemodeinit

[ Dodano: 2018-08-29, 17:14 ]
Jeszcze jedno pytanie, jak zapisa? kordy do bazy chodzi mi o typ danch bo gdy nam Int to zapisuje mi ale nie w formacie 1111.111

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-09-04, 17:10


Robson04







Wiek: 23
Na forum: 3183 dni
Posty: 58
Nick w MP: Robson04

Piwa: 512

Respekt: 60

"carl0987" napisał/a:

No tak, a co z pojazdami dla zwyk?ych graczy albo z pojazdami firmowymi ? Mog? ewentualnie sprawdzi? czy pojazd jest firmowy lub dla zwyk?ego gracza jakim? if'em w ongamemodeinit

[ Dodano: 2018-08-29, 17:14 ]
Jeszcze jedno pytanie, jak zapisa? kordy do bazy chodzi mi o typ danch bo gdy nam Int to zapisuje mi ale nie w formacie 1111.111


Daj?c warto?? INT maj?c warto?? zmiennoprzecinkow? nie jest to dobry pomys?.
U?yj FLOAT do koordynat?w.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
carl0987
Wysłany: 2018-09-05, 19:04


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

Okej wszystko mi ju? dzia?a teraz mam zagwozdk? jak sprawdzi? czy pojazd jest gracza kt?ry wsiada do pojazdu. Podpowie kto? ?

[ Dodano: 2018-09-05, 20:02 ]
ps. potrzebuje jeszcze funcji kt?ra pobierze rotacj? gracza(chodzi mi o to ?e GetPlayerPos daje X Y Z ale nie daje w kt?r? stron? patrzy gracz :D )

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-09-05, 20:29


Robson04







Wiek: 23
Na forum: 3183 dni
Posty: 58
Nick w MP: Robson04

Piwa: 512

Respekt: 60

"carl0987" napisał/a:

Okej wszystko mi ju? dzia?a teraz mam zagwozdk? jak sprawdzi? czy pojazd jest gracza kt?ry wsiada do pojazdu. Podpowie kto? ?

[ Dodano: 2018-09-05, 20:02 ]
ps. potrzebuje jeszcze funcji kt?ra pobierze rotacj? gracza(chodzi mi o to ?e GetPlayerPos daje X Y Z ale nie daje w kt?r? stron? patrzy gracz :D )


Funkcja rotacji gracza: KLIK

Aby sprawdzi?, czy pojazd jest gracza musimy stworzy? p?tle, kt?ra przechodzi przez wszystkie tablice, kt?re s? wype?nione danymi pojazd?w.

Pawn

public OnPlayerEnterVehicle(playeridvehicleidispassenger) {
    //tutaj mo?emy sobie doda?, czy gracz mo?e wchodzi? do nie swojego auta jako pasa?er.
    if(!ispassenger) { //je?eli nie jest pasa?erem (czyli jego stan jest jako kierowca, chce wej?? do pojazdu)
        for(new iMAX_CARSi++) {
            if(VehData[i][OWNER] != 0) { //Funkcja odpowiadaj?ca za sprawdzanie pojazd?w, kt?re s? na pewno wpisane do bazy.
                if(VehData[i][SAMPID] == vehicleid) { //sprawdzamy czy pojazd z tablicy jest ten sam, do kt?rego chce wej?? gracz.
                    if(VehData[i][OWNER] == DaneGracza[playerid][UID_GRACZA]) {//w drugim argumencie podaj enum z danymi gracza. czyli uid.
                        break; //niszczy p?tle, bo pojazd, do kt?rego gracz wsiada jest jego.
                    }
                }
                else { //je?eli nie, to co? zr?b.
                    //zmienne, gdzie zapisujemy dane
                    new Float:pXFloat:pYFloat:pZFloat:pR;

                    //Pobieramy pozycje gracza, x, y, z, rot.
                    GetPlayerPos(playeridpXpYpZ); //pobieramy jego x y z
                    GetPlayerFacingAngle(playeridpR); //pobieramy jego rotacje

                    //ustawiamy dane graczowi
                    SetPlayerPos(playeridpXpYpZ); //ustawiamy jego x y z
                    SetPlayerFacingAngle(playeridpR); //ustawiamy jego rotacje
                    ClearAnimations(playerid0); //usuwamy mu animacje
                    SendClientMessage(playerid, -1"Pojazd nie nale?y do ciebie. :("); //wysylamy wiadomosci
                    /*
                        Kod zosta? wykonany przez Robson04, zostaw mu piwo! 
                    */
                }
            }
            else
                //je?eli tablica jest nieprawidlowa, czyli dane s? puste, p?tla si? niszczy.
                break;    
        }
    }
    return 1;
}


Wszystko zosta?o dok?adnie opisane, licz? na respekt! 8-) :)
Powodzenia!

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
carl0987
Wysłany: 2018-09-05, 20:47


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

Mam lekki problem wynikaj?cy z mojej niewiedzy :D Troszk? zmodyfikowa?em kod i chc? w OnPlayerEnterVehicle pobra? Nick gracza poprzez stocka PlayerName(playerid). Wyskakuje taki b??d: error 033: array must be indexed (variable "PlayerName")

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-09-05, 20:57


Robson04







Wiek: 23
Na forum: 3183 dni
Posty: 58
Nick w MP: Robson04

Piwa: 512

Respekt: 60

"carl0987" napisał/a:

Mam lekki problem wynikaj?cy z mojej niewiedzy :D Troszk? zmodyfikowa?em kod i chc? w OnPlayerEnterVehicle pobra? Nick gracza poprzez stocka PlayerName(playerid). Wyskakuje taki b??d: error 033: array must be indexed (variable "PlayerName")


U?yj tego:

Pawn

stock pName(playerid) {
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playeridp_namesizeof p_name);
    return p_name;
}


Nast?pnie do sformatowanego stringa u?yj pName(playerid);
np.

Pawn

new string[128];
format(stringsizeof string"Twoja nazwa to: %s"pName(playerid));
SendClientMessage(playerid, -1string);


EDIT: najlepiej daj kod twojego stocka 'PlayerName' :)

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
carl0987
Wysłany: 2018-09-05, 21:00


carl0987







Wiek: 37
Na forum: 4891 dni
Posty: 295
Nick w MP: Lolek

Piwa: 10

Respekt: 50

m?j stock wygl?da tak samo :D
Pawn

stock PlayerName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playeridnamesizeof name);
    return name;
}


[ Dodano: 2018-09-05, 21:03 ]
z tego co widz? to nawet jak chce jak?? zmienn? indexowa? to te? wywala b??d je?li u?yje j? np. w if'ie

[ Dodano: 2018-09-05, 21:08 ]
Dobra poradzi?em :D M?j b??d chcia?em zmienn? o innym typie por?wna? do innego typu zmiennej xD

Podpis
Postaw piwo autorowi tego posta
 

 
Tagi: system :: pojazdów :: pobieranie :: mysql
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku