Wysłany: 2013-09-10, 14:52
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Witajcie
Zrobi?em komend? /parkuj,kt?ra zapisuje dany pojazd do
pliku gracza.Komenda:
Kod: if(strcmp(cmdtext, "/parkuj", true)==0){
new id;
new Float:VehX,Float:VehY,Float:VehZ,Float:VehRot;
id = GetVehicleModel(playerid); //pobieramy ID pojazdu
GetVehiclePos(playerid, VehX, VehY, VehZ); //zapisujemy wsp??rz?dne X, Y, Z
GetVehicleZAngle(playerid, VehRot); //zapisujemy rotacje pojazdu
dini_FloatSet(udb_encode(Player(playerid)), "ID Pojazdu", id); //zapisujemy ID pojazdu
dini_FloatSet(udb_encode(Player(playerid)), "PosX", VehX); //wsp??rz?dne X
dini_FloatSet(udb_encode(Player(playerid)), "PosY", VehY); //wsp??rz?dne Y
dini_FloatSet(udb_encode(Player(playerid)), "PosZ", VehZ); //wsp??rz?dne Z
dini_FloatSet(udb_encode(Player(playerid)), "Rot", VehRot); //rotacje
return 1;
}
Wywo?ywanie pojazdu w OnPlayerSpawn:
Kod: new id;
new Float:VehX,Float:VehY,Float:VehZ,Float:VehRot;
id = dini_Int(udb_encode(Player(playerid)),"ID Pojazdu");
VehX = dini_Int(udb_encode(Player(playerid)),"PosX");
VehY = dini_Int(udb_encode(Player(playerid)),"PosY");
VehZ = dini_Int(udb_encode(Player(playerid)),"PosZ");
VehRot = dini_Int(udb_encode(Player(playerid)),"Rot");
CreateVehicle(id,VehX,VehY,VehZ,VehRot,1,1,99999999);
1.Problem w tym ?e ID pojazdu si? nie zapisuje np.
zamiast id 533 jest id 5.
2.Zapisuje si? tylko PosX i nic wi?cej.
Je?eli ma kto? pomys? jak to naprawi? otrzyma piwka
P.S kod wyda si? dla was idiotyczny,lecz pierwszy raz robi?
system zapisu pojazdu.
Wysłany: 2013-09-10, 15:17
neroPL
Wiek: 28 Na forum: 5671 dni Posty: 79
Nick w MP: Kapec
Piwa : 584
Kod: dini_FloatSet(udb_encode(Player(playerid)), "ID Pojazdu", id); //zapisujemy ID pojazdu
Serio ? Chcesz zapisac id jako float ? ;| zmie? na :
Kod: dini_IntSet(udb_encode(Player(playerid)), "ID Pojazdu", id);
next : Kod: GetVehiclePos(playerid, VehX, VehY, VehZ); //zapisujemy wsp??rz?dne X, Y, Z
tutaj zrobi?es by pobra?o id gracza zamiast id pojazdu gracza w kt?rym on jest, zamie? na :
Kod: GetVehiclePos(id VehX, VehY, VehZ); //zapisujemy wsp??rz?dne X, Y, Z
Zobacz teraz czy zadzia?a.Elo
Wysłany: 2013-09-10, 15:41
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Nie zauwa?y?em tych b??d?w xD
A co do tego to w pliku pokazuje si?:
Kod: ID Pojazdu=0
PosX=0.000000
PosY=0.000000
PosZ=0.000000
Rot=0.000000
Czyli dalej jest co? nie tak.
Wysłany: 2013-09-10, 16:27
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
GetVehicleModel(playerid); o.O ? Pobierasz model gracza (co jest niemo?liwe), a nie jakiegokolwiek pojazdu, .
-> GetVehicleModel(GetPlayerVehicleID(playerid)); jak ju.
Wysłany: 2013-09-10, 16:32
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Nie jestem dobry w te klocki
Teraz to pokazuje si? w pliku gracza:
Kod: ID Pojazdu=402
PosX=0.000000
PosY=0.000000
PosZ=0.000000
Rot=0.000000
ID pobiera lecz pozycji dalej nie pobiera.
Wysłany: 2013-09-10, 17:05
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
G?ra:
Kod: new _playaVeha[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...};
Komenda:
Kod: if(cmdtext[1] == 'p' && cmdtext[2] == 'a' && cmdtext[3] == 'r' && cmdtext[4] == 'k' && cmdtext[5] == 'u' && cmdtext[6] == 'j')
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "Nie jeste? w poje?dzie!"), true;
new Float:VehPose[4], id = GetPlayerVehicleID(playerid);
if(id != _playaVeha[playerid]) return SendClientMessage(playerid, -1, "Nie mo?esz zaparkowa? nie swojego pojazdu!"), true;
GetVehiclePos(id, VehPose[0], VehPose[1], VehPose[2]); //zapisujemy wsp??rz?dne X, Y, Z
GetVehicleZAngle(id, VehPose[3]); //zapisujemy rotacje pojazdu
dini_IntSet(udb_encode(Player(playerid)), "ID Pojazdu", GetVehicleModel(id)); //zapisujemy ID pojazdu
dini_FloatSet(udb_encode(Player(playerid)), "PosX", VehPose[0]); //wsp??rz?dne X
dini_FloatSet(udb_encode(Player(playerid)), "PosY", VehPose[1]); //wsp??rz?dne Y
dini_FloatSet(udb_encode(Player(playerid)), "PosZ", VehPose[2]); //wsp??rz?dne Z
dini_FloatSet(udb_encode(Player(playerid)), "Rot", VehPose[3]); //rotacje
return true;
}
Wczytywanie:
Kod: new Float:VehPose[4], id;
id = dini_Int(udb_encode(Player(playerid)),"ID Pojazdu");
VehPose[0] = dini_Float(udb_encode(Player(playerid)),"PosX");
VehPose[1] = dini_Float(udb_encode(Player(playerid)),"PosY");
VehPose[2] = dini_Float(udb_encode(Player(playerid)),"PosZ");
VehPose[3] = dini_Float(udb_encode(Player(playerid)),"Rot");
_playaVeha[playerid] = CreateVehicle(id, VehPose[0], VehPose[1], VehPose[2], VehPose[3], 1, 1, -1);
OnPlayerEnterVehicle:
Kod: if(!ispassenger)
{
for(new i;i<MAX_PLAYERS;i++)
{
if(i == playerid || _playaVeha[i] == INVALID_VEHICLE_ID || _playaVeha[i] != vehicleid) continue;
ClearAnimations(playerid);
break;
}
}
Dialog:
Kod: if(dialogid == DIALOG_AUTO_FELTZER)
{
if(response)
{
if(_playaVeha[playerid] != INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "Posiadasz ju? prywatny pojazd!"), true;
if(GetPlayerMoney(playerid) <= 25000) return SetTimerEx("Kasa", 100, false, "i", playerid);
kupilpojazd[playerid] = 1;
GivePlayerMoney(playerid, -25000);
SendClientMessage(playerid,COLOR_GREEN,"Kupi?e? Feltzer'a za {0000FF}25.000{FFFFFF}$");
_playaVeha[playerid] = CreateVehicle(533,2149.2175,-1136.0005,25.2832,266.4764,1,1,-1);//Feltzer
dini_IntSet(udb_encode(Player(playerid)), "ID Pojazdu", 533);
}
else SendClientMessage(playerid,COLOR_GREEN,"Pojazd nie zosta? zakupiony.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
return 1;
}
OnPlayerDisconnect:
Kod: if(IsValidVehicle(_playaVeha[playerid])) DestroyVehicle(_playaVeha[playerid]);
_playaVeha[playerid] = INVALID_VEHICLE_ID;
Ostatnio zmieniony przez IgrexolonO 2013-09-12, 20:45, w całości zmieniany 8 razy
Wysłany: 2013-09-10, 17:25
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Thanks dude.Teraz dzia?a,lecz mam jeszcze jedno pytanie.
Czy da si? do tego dorobi?,aby osoba,kt?ra posiada ten pojazd
mog?a jako jedyna do niego wej???
Wysłany: 2013-09-10, 17:29
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
Ile taki gracz mo?e posiada? maksymalnie 'w?asnych pojazd?w'?
Wysłany: 2013-09-10, 17:40
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Maksymalnie mo?e mie? 1 pojazd.
A o jeszcze chodzi?o by mi o to aby zrobi? blokad? na
komend? /parkuj dla samochodu kt?ry ma gracz w
pliku DINI.
Wysłany: 2013-09-10, 17:59
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
Patrz post wy?ej.
P.S.: Pami?taj o usuwaniu pojazdu przy wyj?ciu gracza z serwera.
Kod: if(IsValidVehicle(_playaVeha[playerid])) DestroyVehicle(_playaVeha[playerid]);
+ Gdzie? w mapie, o ile nie masz ju? zdefiniowane:
Kod: native IsValidVehicle(vehicleid);
P.S.2.: To prawda.
Wysłany: 2013-09-10, 18:11
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
Kod: _playaVeha[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...};
gdzie to wklei? bo mam error:
Kod: error 017: undefined symbol "_playaVeha"
czy to mie? tak? form?:
Kod: new _playaVeha[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...};
Ostatnio zmieniony przez paskal 2013-09-10, 18:13, w całości zmieniany 1 raz
Wysłany: 2013-09-10, 18:12
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
Dodaj so new przed to, zapomnia?em co nie. Papie? te? cz?owiek, ma prawo si? pomyli?, jo.
Wysłany: 2013-09-10, 18:15
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
te? da?em new przed tym w poprzednim po?cie jako pytanie czy to ma by? xD
teraz mam taki error:
Kod: error 029: invalid expression, assumed zero
warning 215: expression has no effect
linijka:
Kod: if(i != playerid && _playaVeha[i] != INVALID_VEHICLE_ID && _playaVeha[i] == vehicleid) ClearAnimations(playerid), break;
Wysłany: 2013-09-10, 18:18
IgrexolonO
Wiek: 34 Na forum: 6809 dni Posty: 1386
Piwa : 1062
Kod: if(i != playerid && _playaVeha[i] != INVALID_VEHICLE_ID && _playaVeha[i] == vehicleid){ ClearAnimations(playerid); break; }
A tak, jo?
Wysłany: 2013-09-10, 18:19
paskal
gtaoffline.pl
Wiek: 29 Na forum: 5644 dni Posty: 242
Piwa : 341
You are my master dude
Jak b?d? mia? jaki? problem to napisze.
[ Dodano : 2013-09-12, 17:48 ]
Przerobi?em kod jak potrzebowa?em.Podam tylko cz???
o kt?r? mi chodzi.Komenda:
Kod: if(strcmp(cmd, "/parkuj", true)==0)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_LIGHTRED, "Nie jeste? w poje?dzie!"), true;
new Float:VehPose[4], id = GetPlayerVehicleID(playerid);
GetVehiclePos(id, VehPose[0], VehPose[1], VehPose[2]);
GetVehicleZAngle(id, VehPose[3]);
dini_IntSet(udb_encode(Player(playerid)), "ID Pojazdu", GetVehicleModel(id));
dini_FloatSet(udb_encode(Player(playerid)), "PosX", VehPose[0]);
dini_FloatSet(udb_encode(Player(playerid)), "PosY", VehPose[1]);
dini_FloatSet(udb_encode(Player(playerid)), "PosZ", VehPose[2]);
dini_FloatSet(udb_encode(Player(playerid)), "Rot", VehPose[3]);
return 1;
}
Dialog w kt?rym auto zostaje kupione:
Kod: if(dialogid == DIALOG_AUTO_FELTZER)
{
if(response)
{
if(GetPlayerMoney(playerid) <= 25000) return SetTimerEx("Kasa", 100, false, "i", playerid);
kupilpojazd[playerid] = 1;
GivePlayerMoney(playerid, -25000);
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_GREEN,"Kupi?e? Feltzer'a za {0000FF}25.000{FFFFFF}$");
CreateVehicle(533,2149.2175,-1136.0005,25.2832,266.4764,1,1,-1);//Feltzer
}
else
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_GREEN,"Pojazd nie zosta? zakupiony.");
}
return 1;
}
1.Chodzi mi o to by tylko w?a?ciciel m?g? wej?? do pojazdu,poniewa?
tamte kody nie dzia?a?y.
2.Aby komenda /parkuj dzia?a?a tylko na zakupiony pojazd.
Tagi: zapis :: auta :: pliku :: gracza :: dini
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: