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

Wysłany: 2013-07-20, 13:40


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Witam,

Posiadam skrypt na prywatne pojazdy z mo?liwo?ci? spawnu tylko jednego auta na osob?. Postanowi?em usun?? zmienn? kt?ra blokowa?a spawn kilku aut. Jednak, gdy wpisz? komend? /pojazd spawn [UID], mog? spawnowa? je do woli, ale gdy wpisz? /pojazd unspawn [UID], komenda dzia?a tylko raz tzn. Mam dwa pojazdy o UID 0 i 1. gdy wpisz? /pojazd unspawn 0, pojazd prawid?owo si? usunie, ale gdy potem wpisz? pojazd unspawn 1, z pojazdem nic si? nie dzieje (wy?wietla si? SERWER: Unknown Command), ale w jego pliku s? nadpisywane warto?ci. W czym jest problem? Oto ca?a komenda: http://pastebin.com/jxyH1gUu

@edit
Na ?yczenie adamoloxD daj? link do orygina?u: http://pastebin.com/dyAifQEw

Ostatnio zmieniony przez Glut 2013-07-24, 18:51, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-20, 19:24


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

w cmd na unspawn masz:

Kod:

if(dini_Int(CarFile,"Spawned") == 1)

i je?eli ma spawni?te auto, to usuwa i ustawia "spawned" na 0, dlatego 2 raz si? to nie wykona - je?eli np. kto? spawn?? 2 auta jeden po drugim, bez usuwania poprzedniego, to "Spawned" i tak jest ustawiane na 1, a gdy usunie jest ustawiane na 0, dlatego nie mo?na usun?? drugiego auta.
Kod:

dini_IntSet(CarFile,"Spawned",0);


przy cmd na spawn musisz przy ka?dym spawnie dodawa? 1 do tej zmiennej (ps. lepiej robi? na zmiennych, ni? tak ca?y czas wczytywa? i nadpisywa? plik, za bardzo to obci??a serwer, zw?aszcza z dini)
i przy unspawnie w warunku sprawdza? czy "spawned" jest wi?ksze od zera, i usuwa? z "spawned" 1. wtedy b?dziesz m?g? usun?? auta tyle razy ile spawna?e?.
nie zg?ebia?em si? w ten kod, czy masz tam zabezpieczenie przed "usuni?ciem" dwukrotnym tego samego pojazdu, a raczej pojazdu kt?ry nie istnieje, ?eby? przypadkiem nie usuwa? nieinstniej?cego pojazdu i nie odejmowa? sobie 1 warto?ci od "spawned" :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-20, 23:12


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Za bardzo nie zrozumia?em.
Kod:

dini_IntSet(CarFile,"Spawned",0);
To "Spawned" jest w ka?dym pliku auta np. 0.ini, 1.ini. Kiedy odspawnuje drugi w?z, w pliku nadpisuje si? ta warto?? i wynosi zero, a auto dalej stoi i dostaj? komunikat o nieistniej?cej komendzie.
PS. Usuni?ta zmienna to:
Kod:

// bool:Spawned
kt?ra by?a u?ywana tak:
Kod:

//Car[vehicleid][Spawned] = true;


Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 12:04


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

Glut napisał/a:

Postanowi?em usun?? zmienn? kt?ra blokowa?a spawn kilku aut.


Przywr?? t? zmienn?, tylko nie u?ywaj jej do blokowania auta, a do zapisywania ile aut ma gracz spawni?tych
- np. AutoSpawniete[MAX_PLAYERS] = 0;
Za???my, na pocz?tku nie masz spawni?tego auta - zmienna
AutoSpawniete[playerid] = 0 - prawda?
Jak spawnujesz auto o UID 0, dopisujesz do zmiennej +1, i masz
AutoSpawniete[playerid] = 1;
Spawnujesz auto o UID 1 i dopisujesz znowu +1, i masz
AutoSpawniete[playerid] = 2;

W ten spos?b w komendzie na usuwanie auta, gdy usuniesz jakiekolwiek auto
usuwasz -1 ze zmiennej AutoSpawniete[playerid]
i masz AutoSpawniete[playerid] = 1;
W ten spos?b jeszcze raz mo?esz u?y? tej komendy i usun?? dane auto.

Lepiej robi? to na zmiennych, a nie w pliku dini dini_IntSet(CarFile,"Spawned",0); - jest to bezsensowne i uci??liwe, ?atwiej operowa? na zmiennych.
No chyba ?e zale?y Ci na tym, aby przy wyj?ciu z serwera auta gracza si? nie usuwa?y, to dopiero przy wyj?ciu z serwera zapisz do tego pliku dini warto?? ze zmiennej AutoSpawniete[playerid].
A gdy wejdzie znowu na serwer, to przypisz warto?? z pliku dini do zmiennej.
W ten spos?b tylko 2 razy (przy wej?ciu i wyj?ciu) u?ywasz zapisu/odczytu pliku dini.
Wyobra? sobie jakby? mia? na serwerze 30 graczy i co chwil? kto? by spawnowa? i usuwa? pojazd i ci?gle by? nadpisywa? plik dini. i tak ju? to robisz np. z tuningiem czy pozycj? auta (nie zg??bia?em si? w tw?j kod i nie jestem pewien czy tak, czy tylko masz id auta zapisany, ale mniejsza o to) i nie potrzeba wi?cej obci??a? serwera, bo potem si? ludzie dziwi? czemu im tak szybko zu?ycie procesora idzie jak kilku graczy jest :)

Mam nadziej?, ?e ju? zrozumia?e? o co mi chodzi.
P.S.
Jeszcze tak dla pewno?ci, zwr?? uwag? na cmd na spawnowanie,
przy spawnie auta ustawiasz zawsze warto?? 1
Kod:

dini_IntSet(CarFile,"Spawned",1);

nie wa?ne czy jest 10 czy 1 spawni?te auto, a potem u?ywasz tego samego pliku do sprawdzania przy usuwaniu pojazdu i jak usuniesz to ustawiasz 0,
dlatego nie mo?esz pozosta?ych aut usun??.
Wi?c jak nie chcesz nawet u?ywa? zmiennej tylko nadal plik?w, to
Kod:

dini_IntSet(CarFile,"Spawned",1);

w miejscu tej 1 pobierz warto?? ze "Spawned" i dodaj 1 i dopiero zapisz,
chyba tak powinno zadzia?a?:
Kod:

dini_IntSet(CarFile,"Spawned",dini_Int(CarFile,"Spawned")+1); //nie jestem pewien tego, wi?c nie gwarantuje, jak m?wi?em lepiej zmienne.

a przy usuwaniu zr?b tak samo tylko odejmij 1
a przy sprawdzaniu czy gracz ma spawni?te auto (kiedy usuwasz) u?yj:
Kod:

if(dini_Int(CarFile,"Spawned") > 0)


Mam nadzieje ?e wszystko ju? jasne.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 16:42


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Chyba nie zrozumia?e? o co w tym wszystkim chodzi. Usuni?ty bool:Spawned by? tylko w skrypcie do blokowania kolejnego spawnu auta. W pliku za? by?a przechowywana informacja o tym, czy to auto zosta?o zespawnowane (1 - tak, 0 - nie). Przyk?adowy plik auta: http://pastebin.com/AEPDVXmu
Co do tej zmiennej, popr?buje i odpisz?.

PS. P??niej ci??ko b?dzie zrobi? z t? zmienn? komend? /spawn-all spawnuj?c? wszystkie prywatne pojazdy i /unspawn-all

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 18:37


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

Wiem, ?e ta zmienna by?a do blokowania spawnowania wi?kszej ilo?ci aut, tylko da?em taki przyk?ad.


jeszcze powiedz mi, czy jak zapisujesz:
CarFile,"Spawned"
to CarFile jest dla ka?dego pojazdu osobno, czy jest tylko 1 taki plik?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 21:59


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Ka?dy pojazd ma w?asny plik (CarFile). Ka?dy plik oznacza UID pojazdu tj. 0.ini w grze UID = 0 itd.

Podpis
NA PRZYSZŁOŚĆ KRZYCZ GŁOŚNIEJ BO MAM APARAT SŁUCHOWY I NIE SŁYSZĘ LITER!
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 22:56


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

To napisz co si? pojawia na czacie gdy pr?bujesz usun?? 2 pojazd.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 23:07


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Teraz odkry?em co? dziwnego! Zespawnowa?em pojazdy o UID 0 i 2 najpierw odspawnowa?em 0 i znikn?? o UID 2. Je?li spr?buj? kolejny raz odspawnowa? jakiekolwiek auto, to dostaj? SERWER: Unknown Command.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 23:21


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

Dziwne, musia?bym odpali? ten skrypt na serwerze i zobaczy?, a niestety nie mam takiej teraz mo?liwo?ci.
Powiedz mi jeszcze - UID pojazdu jest w pliku, a vUID to?
I czy jak spawnujesz auto to do vUID jest przypisywana warto?? z UID?

Dziwne to, sam pisa?e? ten skrypt czy z neta? Lepiej by by?o jakby? sam na podstawie tego napisa? w?asny skrypt, bez kopiowania, tylko my?le? po kolei co si? dzieje, co jest do czego przypisywane, zapisywane etc.
Bo czasem jak z gotowego skryptu usuniesz jeden fragment, to wszystko si? sypie, jak tutaj.

Jak ja bym taki skrypt pisa?, to bym stworzy? tablic? dla gracza, w kt?rej zapisuje mu si? jakie samochody o jakim UID spawn?? i tylko takie pojazdy mo?e usun??. A dla admina, usuwanie wszystkich pojazd?w to sprawdzenie kt?re pojazdy s? spawni?te i usuni?cie ich, w p?tli.

Poszukaj lepiej innego skryptu albo sam go napisz.
No chyba, ?e kto? potrafi to naprawi?, ja na razie nie mam pomys?u :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-21, 23:46


adamoloxD

PaFFner






Wiek: 32
Na forum: 5928 dni
Posty: 64

Piwa: 523

Respekt: 72

Najlepiej narazie przesta? babra? si? w Dini, naucz si? kt?rego? z szybszych system?w I/O dot. plik?w. No i jak Kurio, napisa?, spr?buj to od zera napisa? (chyba ?e to jest tw?j skrypt).

Podpis
Kod:


public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return DestroyVehicle(vehicleid);
}
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-22, 00:03


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Cytat:

Powiedz mi jeszcze - UID pojazdu jest w pliku, a vUID to?

vUID to zmienna przechowuj?ca UID pojazdu. Dok?adnie tak, jak to tu napisa?e?:[code]I czy jak spawnujesz auto to do vUID jest przypisywana warto?? z UID? [code]
Cytat:

Dziwne to, sam pisa?e? ten skrypt czy z neta?
Skrypt jest z neta (dok?adnie z tego forum). Historia tego skryptu jest taka, ?e link orygina?u wygas?, a w postach ni?ej znalaz?em kogo?, kto go wystawi? w zcmd (za chwil? poszukam tematu). C??, najpeszym wyj?ciem dla mnie by by?o pozostanie przy tym skrypcie, bo du?o ju? w nim dorobi?em. Napisa?e? o zmiennej vUID... Podsun??e? mi pewien pomys?, kt?ry zrealizuj? dzisiaj w po?udnie (teraz jest troch? p??no). Mianowicie dodam kilka printf'?w, kt?re poka??, czy w vUID jest prawid?owa liczba.
Cytat:

Najlepiej narazie przesta? babra? si? w Dini

To tylko tymczasowe. P??niej si? przenios? na Y-ini lub SQLite (nienawidz? MySQL, pragn? mie? wszystko pod r?k?)

PS. Je?li chcesz mog? Ci da? ten skrypt na PW. Posiada on jeszce kilka printf'?w, kt?rych u?ywa?em do test?w i dopiero zacz?ty system kradzie?y tych woz?w (spodoba?o mi si? GTA Chinatown Wars :D ).

PS2. Link do tematu ze skryptem: http://gtao.pl/dm-i-gf-sy...pwn-vt41668.htm
Link do skryptu jest w drugim po?cie u?ytkownika krzyzan na drugiej stronie. Orygina? by? w dcmd, a to co on wystawi? jest w zcmd.

Podpis
NA PRZYSZŁOŚĆ KRZYCZ GŁOŚNIEJ BO MAM APARAT SŁUCHOWY I NIE SŁYSZĘ LITER!
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-22, 01:01


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

do mysql sa fajne pluginy, proste i ?atwe w obs?udze, a i jak masz phpmyadmin (co tez w hostingach jest standardem razem z baza danych - przeciez jakis dostep do niej musisz miec) jest dla mnie spoko, wchodz? widz? wszystko po kolei co si? dzieje.
w sqlite si? nie bawi?em i nie wiem jak to wyg?ada dok?adnie, mo?e si? kiedy? przekonam :)

co do "tymczasowego" u?ytkowania dini, to powiem Ci tak - zamie? to najszybciej jak mo?esz, potem tylko coraz wi?cej b?dziesz mia? do "zamiany" i nie b?dzie ci si? chcia?o im pr?dzej tym lepiej.

Podziel si? dzi? wynikami twoich test?w mo?e jeszcze do czego? dojdziemy tutaj.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-22, 11:53


Glut







Wiek: 31
Na forum: 4865 dni
Posty: 46

Piwa: 5

Respekt: 47,6

Zrobi?em test. Zespawnowa?em auta o UID 0 i 2. Efekt? Kiedy chcia?em odspawnowa? Premier'a(UID 0) odspawnowa? si? Admiral(UID 2), a na czacie pisa?o, ?e odspawnowa?em Admirala :shock: o UID 0 (Przecie? on ma UID 2, a wpisa?em komend? /pojazd unspawn 0!). Potem chcia?em odspawnowa? Admirala (wpisuj?c /pojazd unspawn 2), ale wyskoczy?o SERWER: Unkonown Command (i tutaj musia?o si? co? nadpisa?, o czym dowodzi kolejna cz??? posta), dopiero za drugim razem, kiedy wpisa?em komend? pokaza?o si?: "Ten Pojazd nie jest zespawnowany!". Podaj? logi:
Przy /pojazd unspawn 0:
Kod:

[Pojazd UNSPAWN]: vUID:0, VEHICLEID:0, HEALTH:24000.000000

Przy /pojazd unspawn 2:
Kod:

[Pojazd UNSPAWN]: vUID:2, VEHICLEID:0, HEALTH:0.000000

W pliku Admirala mam teraz w polu Health warto?? 0.000000 :shock:

@edit
Ju? chyba wiem gdzie jest b??d (prosz? o facepalma :eye: ). W kodzie da?em linijk?
Pawn
new vehicleid GetPlayerVehicleID(playerid);

a ?adnego gracza nie ma w poje?dzie kiedy unspawnuj? pojazd. Dlatego vehicleid wynosi 0. Teraz pytanie: Jak pobra? id pojazdu, w kt?rym nie ma gracza (zapomnia?em funkcj?)?

@edit2
W kodzie mam takie co?:
Pawn
Car[vehicleid][VehicleGameID]

I to VehicleGameID przechowuje id pojazdu jak je przenie?? do vehicleid? Najlepiej to bym komu? da? ten skrypt i ta osoba by to poprawi?a.

Podpis
NA PRZYSZŁOŚĆ KRZYCZ GŁOŚNIEJ BO MAM APARAT SŁUCHOWY I NIE SŁYSZĘ LITER!
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-07-22, 13:09


Kurio







Wiek: 35
Na forum: 5511 dni
Posty: 122

Piwa: 17

Respekt: 76,3

eh.
powiedz mi - Car[vehicleid][VehicleGameID]
czym si? tutaj r??ni vehicleid od VehicleGameID?
vehicleid - to ten unikalny ID pojazdu, kt?rego u?ywasz do nazwy pliku? np. 0.ini
a VehicleGameID to numer pojazdu, kt?ry spawnuje si? i dostaje w?a?nie sw?j id "na mapie" ??



@Edit:
Spr?buj mo?e najpierw zrobi? prost? cmd - kt?ra wy?wietla Ci napis z ID'em pojazdu:
a) kiedy jeste? poza autem u?yj Car[vehicleid][VehicleGameID] do pobrania tego id'u
b) kiedy jeste? w aucie to getplayervehicleid.
i sprawd? czy s? takie same.

ale troch? to bez sensu, jak dla mnie - zapisywa? id pojazdu do tablicy, z kt?rej ?eby odczyta? ten id, trzeba go najpierw zna? :eye:
chyba ?e ten vehicleid w tej tablicy jest czym? innym, i po prostu wsz?dzie s? pomieszane nazwy.

Postaw piwo autorowi tego posta
 

 
Tagi: [rozwiązany] :: komenda :: działająca :: raz.
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