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

Wysłany: 2018-02-21, 20:20


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
"Destinn" napisał/a:

if(?pPojazd[vehicleid][Wlasciciel]?!=?pGracz[playerid][player_nick]?)


Od kiedy tak si? por?wnuje ci?gi znak?w? Ci?g znak?w jest tablic?, posiada swoje indeksy - ka?dy indeks zawiera jeden znak/charakter, ale nie b?d? si? rozpisywa? na ten temat - dodam tylko, ?e od tego s?u?y funkcja strcmp.

"Destinn" napisał/a:

Albo mi si? zdaj? albo ty my?lisz, ?e do ustawiania w?a?ciciela potrzeba u?y? jakie? funkcji - je?eli tak my?lisz to jeste? w b??dzie


Odpal sobie ten kod kolego, kt?ry wprowadza innych w b??d.

Pawn
enum PojazdEnum 
uIDWlasciciel[MAX_PLAYER_NAME+1], 
VehicleIDRejestracja[20], 
Kolor1Kolor2Float:PXFloat:PYFloat:PZFloat:PABlokadaPrzebieg 
} 

new pPojazd[MAX_VEHICLES][PojazdEnum];

enum a
{
    Nick[24]
}

new pGracz[50][a];

public OnFilterScriptInit()
{
    strcat(pPojazd[0][Wlasciciel], "gggBBBggg"20);
    strcat(pGracz[0][Nick], "gggAAAggg"20);

    printf("%d %d [%d] [%s - %s]"pPojazd[0][Wlasciciel], pGracz[0][Nick], pPojazd[0][Wlasciciel] == pGracz[0][Nick], pPojazd[0][Wlasciciel], pGracz[0][Nick]);
    //output: 103 103 [1] [gggBBBggg - gggAAAggg]
    return 1;
}


Je?li ju? chcesz przypisa? gracza do pojazdu, to u?yj do tego uID gracza. Jest to spore u?atwienie, gdy?:

1. Zmniejsza rozmiar tablicy, bo tworzysz tablic? jednowymiarow? (np. gVehicleOwnerID[MAX_VEHICLES] zamiast gVehicleOwnerID[MAX_VEHICLES][MAX_PLAYER_NAME + 1])
2. Podczas zmiany nicku gracza musisz tak?e zmienia? tekst zapisany w tablicy, a uID gracza nigdy si? nie zmieni.
3. Nie potrzeba ?adnej funkcji do por?wnywania w?a?ciciela, po prostu dajesz w warunku uid_gracza[playerid] == gVehicleOwnerID[vehicleid]

Co dalej w kodzie nie dzia?a? Wstaw funkcj? print(str) przed sscanf/po mysql_fetch_row, najwidoczniej sscanf ?le rozdziela string.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-02-22, 17:03


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

printf przed sscanfem: 1|MG303|580|MG303|121|183|2161.99|-1168.11|23.5458|90.175|0|0 - czyli wszystko dobrze.

1) Jak mam por?wna? uID gracza do uID pojazdu, je?li np uID gracza to 1, a uID pojazdu to 3?
2) Jak mam np pobra? uID pojazdu podczas tworzenia go + zapisu do tabeli? Gdy wykonuj? Insert into to uID samo wzrasta (auto increment). Musia?bym dopiero pobra? uID po stworzeniu w tabeli.

Doda?em kolejnego printa po sscanfie:
Kod:

printf("Wlasciciel: %s", pPojazd[i][Wlasciciel]);
- tu pokazuje dobrze.

Nast?pnie w OnPlayerEnterVehicle:
Pawn
    printf("GetPrivate: %s"pPojazd[vehicleid][Wlasciciel]);
    //if(!IsPlayerVehicleOwner(playerid, vehicleid) && !ispassenger)
     if(!strcmp(pPojazd[vehicleid][Wlasciciel], PlayerName(playerid), true))
    {
        SendClientMessage(playerid, -1"{A0A0A0}Info: {FFFFFF}Nie jeste? w?a?cicielem tego pojazdu!");
        ClearAnimations(playerid);
        return 0;
    }


i tu jest zonk..
prinft GetPrivate nie pokazuje NIC, tzn null. Nie ma w?a?ciciela.


Czyli po prostu tworzony pojazd w LoadPrivVehicles() nie jest przypisywany do w?a?ciciela.

Pobiera z bazy pPojazd[i][Wlasciciel] - musimy to przypisa? do vehicle:
Kod:

vehicle = CreateVehicle(pPojazd[i][VehicleID], pPojazd[i][PX], pPojazd[i][PY], pPojazd[i][PZ], pPojazd[i][PA], pPojazd[i][Kolor1], pPojazd[i][Kolor2], -1, 0);

tylko jak?

______________________________________

Pr?by
1.
Kod:

format(pPojazd[vehicle][Wlasciciel], 25, "%s", pPojazd[i][Wlasciciel])


2.
Pawn
            format(pPojazd[vehicle][Wlasciciel], 25"%s"pPojazd[i][Wlasciciel]);
            pPojazd[i][Wlasciciel] = pPojazd[vehicle][Wlasciciel];
            printf("Owner: %s"pPojazd[vehicle][Wlasciciel]);

Nic nie da?y.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-02-23, 15:09


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Najpierw stw?rz pojazd

Kod:

new vehicleid;

//
vehicleid = CreateVehicle(...);
strcat(pPojazd[vehicleid][Wlasciciel], "nick wlasciciela", MAX_PLAYER_NAME + 1);


Po co chcesz to robi?? Poda?em przyk?ad, ?e lepiej b?dzie to zrobi? na uID gracza a nie na nick.

"MG303" napisał/a:

Jak mam por?wna? uID gracza do uID pojazdu


Pojazd nie ma swojego uID, tylko gracze. Wcze?niej poda?em przyk?ad jak to zrobi?, prosty warunek

Kod:

if(uid_gracza[playerid] == gVehicleOwnerID[vehicleid])


Tablic? gVehicleOwnerID uzupe?niasz podczas wczytywania pojazd?w, podczas wykonywania zapytania INSERT INTO wstawiasz uID gracza zamiast nicku, po prostu wsz?dzie zamieniasz nick na uID.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
MG303
Wysłany: 2018-02-23, 18:21


silentus

#define true false






Wiek: 30
Na forum: 5282 dni
Posty: 71
Nick w MP: .silent

Piwa: 1462

Respekt: 116,1
Respekt: 116,1

Przygotowa?em Ci taki "pseudokod" obrazuj?cy jak mo?na co? takiego zrobi?, sam stosuje podobn?/tak? sam? technik?.
https://pastebin.com/fCTsSjdr

Oczywi?cie pisane na kolanie, chodzi tylko o pokazanie niekt?rych operacji.

Podpis


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
MG303
Wysłany: 2018-02-23, 19:34


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

To jest bardziej pokr?cone ni? my?la?em.

Zamieni?em W?a?ciciela na uID w?a?ciciela.
Czyli teraz np gdy gracz o uid 2 kupi pojazd, w bazie danych w tabeli pojad?w b?dzie zapisany jako uIDWlasciciel: 2.
________________
Pawn
LoadPrivateVehicles()
{
    new str[400], i=0;
     mysql_query("SELECT * FROM `PrivateVehicles`");
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        while(mysql_fetch_row(str"|"))
        {
              sscanf(str"p<|>iis[30]iiffffif"pPojazd[i][uIDWlasciciel], pPojazd[i][VehicleID], pPojazd[i][Rejestracja], pPojazd[i][Kolor1], pPojazd[i][Kolor2], pPojazd[i][PX],
              pPojazd[i][PY], pPojazd[i][PZ], pPojazd[i][PA], pPojazd[i][Blokada], pPojazd[i][Przebieg]);
            new vehicle CreateVehicle(pPojazd[i][VehicleID], pPojazd[i][PX], pPojazd[i][PY], pPojazd[i][PZ], pPojazd[i][PA], pPojazd[i][Kolor1], pPojazd[i][Kolor2], -10);
            printf("%d"vehicle);
            VehicleOwnerID[vehicle] = vehicle;
            SetVehicleNumberPlate(vehiclepPojazd[i][Rejestracja]);
            ChangeVehicleColor(vehiclepPojazd[i][Kolor1], pPojazd[i][Kolor2]);
            i++;
            IsPrivateVehicle[vehicle] = true;
            printf("ID pojazdu: %d"VehicleOwnerID[vehicle]);
        }
    }
    mysql_free_result();
    printf("Zaladowano %i prywatnych pojazdow."i);
    return 1;
}


Mam dwa pojazdy prywatne i ich ID to: 54, 55. - Wszystko si? zgadza, bo wcze?niej tworz? jeszcze naczepy i inne pojazdy np. policyjne.


No i jak teraz np. por?wna? uid gracza do id pojazdu? Przecie? uid gracza: 2 a vehicleid: 55 to r??nica xD

Postaw piwo autorowi tego posta
 

 
Wysłany: 2018-02-24, 00:04


silentus

#define true false






Wiek: 30
Na forum: 5282 dni
Posty: 71
Nick w MP: .silent

Piwa: 1462

Respekt: 116,1
Respekt: 116,1

Do VehicleOwnerID przypisujesz zmienna vehicle zamiast pPojazd[i][uIDWlasciciel].
Powinno by?:
Kod:

VehicleOwnerID[vehicle] = pPojazd[i][uIDWlasciciel];

VehicleOwnerID powinno mie? wielko?? MAX_VEHICLES+1

Sprawdzasz po prostu por?wnuj?c VehicleOwnerID[vehicleid] do pGracz[playerid][UID] tak jak w kodzie kt?ry Ci da?em wy?ej (oczywi?cie musisz to uid gracza te? gdzie? trzyma?)
Kod:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsPrivateVehicle[vehicleid] && VehicleOwnerID[vehicle] != pGracz[playerid][UID])
{
SendClientMessage(playerid, "ten pojazd nie nale?y do ciebie");
}
}


Podpis


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
MG303
Wysłany: 2018-02-24, 23:02


MG303







Wiek: 30
Na forum: 6418 dni
Posty: 654

Piwa: 2990

Respekt: 231,6
Respekt: 231,6Respekt: 231,6

W ko?cu co? ruszy?o. Dzi?kuj? wszystkim!

Postaw piwo autorowi tego posta
 

 
Tagi: wczytywanie :: pojazdów
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Wczytywanie pojazdów 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