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

Wysłany: 2013-11-02, 14:50


DWD99







Wiek: 29
Na forum: 6264 dni
Posty: 159
Nick w MP: #BENG

Piwa: 1695

Respekt: 64,1

Witam, chcia?em napisa? system pojazd?w na GF'a, ale nie mam poj?cia jak przypisywa? te auta, ?ebym m?g? dorobi? spawn/unspawn itp :) .

Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-11-02, 15:16


Sillence







Wiek: 26
Na forum: 5157 dni
Posty: 1514
Nick w MP: Sillence

Piwa: 1517

Respekt: 416,3
Respekt: 416,3

DWD99, Masz na my?li przypisywanie auta do zmiennej ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-11-02, 15:17


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

Ma?a czarna, kolorowa; jaka droga? Moja droga.

No jak to jak? Tablice na pojazdy, na jedn? tablice jeden pojazd z opisem jego stanu i alles. (to by?a pomoc aka optimus pro informatyk).

Pocz?tek zale?y od Ciebie. Oczywi?cie ja wybra?bym system MySQL. Je?li takowy wybierzesz proponuj? Ci zapozna? si? z map? Ceki, aka "Role Play by Kacper Michewicz". Wed?ug mojej skromnej osoby, najlepiej rozpisa? on system pojazd?w. Warto te? zajrze? do plerpa z wersji 8.3/8.4, kt?ry to pozwoli? sobie podebra? jego system i przerobi? go na 'realia'. Rok temu konstruowa?em zarys takiego systemu. Mog? przedstawi? Ci ma?y gotowiec takowego systemu.

Najwa?niejsz? rzecz? jest tablica, kt?ra trzyma wszystkie dane nt. pojazdu; w moim przypadku jest to:

Kod:

enum gVehicles
{
veh_id,
veh_model,
veh_ownerType,
veh_ownerGID,
Float:veh_Pos[4],
veh_opened,
Float:veh_fuel,
bool:veh_engineRunning,
bool:veh_lamps,
bool:veh_hoodOpened,
bool:veh_trunkOpened,
veh_color[2],
veh_createdVeh
}; new Veh[VEH_LIMIT][gVehicles];


Oczywi?cie mo?esz sobie dopasowa? to, do swoich potrzeb. Kolejn? spraw? jest wczytywanie pojazd?w z bazy danych. Wykona?em to w nast?puj?cy spos?b:

Kod:

forward loadVehicles();
public loadVehicles()
{
new vehid = 0;
mysql_query("SELECT * FROM `vehicles`");
mysql_store_result();
while(mysql_fetch_row_format(sqlstring, "|"))
{
vehid++;
sscanf(sqlstring, "p<|>d", vehid);
sscanf(sqlstring, "p<|>iiifiiffffllllii",
Veh[vehid][veh_id],
Veh[vehid][veh_model],
Veh[vehid][veh_opened],
Veh[vehid][veh_fuel],
Veh[vehid][veh_ownerType],
Veh[vehid][veh_ownerGID],
Veh[vehid][veh_Pos][0],
Veh[vehid][veh_Pos][1],
Veh[vehid][veh_Pos][2],
Veh[vehid][veh_Pos][3],
Veh[vehid][veh_engineRunning],
Veh[vehid][veh_lamps],
Veh[vehid][veh_hoodOpened],
Veh[vehid][veh_trunkOpened],
Veh[vehid][veh_color][0],
Veh[vehid][veh_color][1]);

if(Veh[vehid][veh_ownerType] != 1) Veh[vehid][veh_createdVeh] = CreateVehicle(Veh[vehid][veh_model], Veh[vehid][veh_Pos][0], Veh[vehid][veh_Pos][1], Veh[vehid][veh_Pos][2], Veh[vehid][veh_Pos][3], Veh[vehid][veh_color][0], Veh[vehid][veh_color][1], -1);
SetVehicleParamsEx(Veh[vehid][veh_createdVeh], Veh[vehid][veh_engineRunning], Veh[vehid][veh_lamps], 0, Veh[vehid][veh_opened], 0, Veh[vehid][veh_trunkOpened], 0);
}
mysql_free_result();
vehicles_MAX = vehid+2;
return vehid;
}


Sama zmienna vehicles_MAX zda Ci si? p??niej do optymalnych p?tli, jednak mam nadziej? ?e rozumiesz co niesie owy kod. Nie mam zamiaru zbytnio si? rozpisywa?. Kolejnym krokiem, mo?e by? np. tworzenie pojazd?w, kt?re wykona?em w dialogu; i nie tylko.. ale podaj? tylko wycinek odpowiadaj?cy za stworzenie pojazdu.

Kod:

sscanf(params[0], "s[10]s[10]", choose, name);
if(!strcmp(choose, "createn", true))
{
if(!strlen(name)) SendClientMessage(playerid, jeden, "Nie poda?e? nazwy pojazdu!");
else if(!GetVehicleModelIDFromName(name)) SendClientMessage(playerid, jeden, "Poda?e? niepoprawn? nazw? pojazdu!");
else
{
for(new i=1;i<VEH_LIMIT;i++)
{
if(Veh[i][veh_model] == 0)
{
new vehajkelID = GetVehicleModelIDFromName(name);
if((vehajkelID != 537) && (vehajkelID != 538) && (vehajkelID != 569) && (vehajkelID != 570) && (vehajkelID != 590))
{
Veh[i][veh_id] = i;
Veh[i][veh_model] = vehajkelID;
Veh[i][veh_color][0] = random(126);
Veh[i][veh_color][1] = random(126);
Veh[i][veh_fuel] = GetVehicleMaxFuel(vehajkelID);
GetPlayerPos(playerid, Veh[i][veh_Pos][0], Veh[i][veh_Pos][1], Veh[i][veh_Pos][2]);
GetPlayerFacingAngle(playerid, Veh[i][veh_Pos][3]);
Veh[i][veh_createdVeh] = CreateVehicle(Veh[i][veh_model], Veh[i][veh_Pos][0], Veh[i][veh_Pos][1], Veh[i][veh_Pos][2], Veh[i][veh_Pos][3], Veh[i][veh_color][0], Veh[i][veh_color][1], -1);
format(sqlquery, sizeof(sqlquery), "INSERT INTO vehicles (`id`, `model`, `opened`, `ownerType`, `ownerGID`, `vehPosX`, `vehPosY`, `vehPosZ`, `vehPosAngle`, `vehColor1`, `vehColor2`) VALUES ('%i', '%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%i', '%i')",
i, Veh[i][veh_model], 1, 0, playerInfo[playerid][gid], Veh[i][veh_Pos][0], Veh[i][veh_Pos][1], Veh[i][veh_Pos][2], Veh[i][veh_Pos][3], Veh[i][veh_color][0], Veh[i][veh_color][1]);
mysql_query(sqlquery);
new carHasBeenCreaten[150];
format(carHasBeenCreaten, sizeof(carHasBeenCreaten), "Stworzono pojazd o ID: (%i) Model: (%s). Pami?taj o zmianie w?a?ciciela! =)", i, VehicleNames[Veh[i][veh_model]-400]);
SendClientMessage(playerid, jeden, carHasBeenCreaten);
if(i == vehicles_MAX && (vehicles_MAX-i) < 2)
{
vehicles_MAX = i+2;
}
} else SendClientMessage(playerid, jeden, "Trains aren't supported in Vice City map. =(");
break;
}
}
}
return 0;
}


Oczywi?cie, chcia?bym przypomnie? ?e kod ten by? pisany przez moj? osob? do?? dawno i na dzisiejsze realia z niego bym nie korzysta?; aczkolwiek mo?na si? na nim wzorowa?, do czego zach?cam *takie ma?e moje pocz?tki*.

W razie czego zawsze masz moje Gadu Gadu. Kto pyta nie b??dzi.

P.S.: By?bym prawie zapomnia?. Kod by? pisany pod modyfikacj? San Andreas, nie pod samego SA-MP'a, przez to nie czuj si? zdziwiony widz?c co niekt?re ID modeli pojazd?w. :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2013-11-02, 15:20


optimus

PawnoMen






Wiek: 27
Na forum: 5614 dni
Posty: 453
Nick w MP: [PMS]ReveresPL

Piwa: 159

Respekt: 59

Ostrzeżeń: 80%
Na pocz?tku mapki
Kod:


#define MAX_SPAWN_VEHICLES ilo?? aut kt?re zrobisz
new auta[MAX_SPAWN_VEHICLES]


Tam gdzie te auta tworzysz
Kod:


auta[0] = AddStaticVehicle...
auta[...] = AddStaticVehicle...
...


Je?eli chcesz je usun??
Kod:


for(new i=0; i<MAX_SPAWN_VEHICLES; i++)
{
DestroyVehicle(auta[i]);
}


Je?eli chcesz zrespawnowa? auta
Kod:


for(new i=0; i<MAX_SPAWN_VEHICLES; i++)
{
if(!IsVehicleInUse(auta[i]))
{
SetVehicleToRespawn(auta[i]);
}
}


Je?eli chcesz usun?? jedno wybrane auto to usu? for i w "i" wpisz id tego auta

[ Dodano: 2013-11-02, 15:34 ]
Przepraszam cb Igrexolono, ale nie widzia?em twojego postu. Pisali?my razem :D

Podpis
Prpgramujesz w Unity i potrzebujesz pomocy?
|?Zapraszamy na forum Unity?|
http://www.unity3d.ugu.pl
Postaw piwo autorowi tego posta
 

 
Tagi: system :: 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 » [GF] System 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