Wysłany: 2013-04-19, 16:10
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Witam mam problem z kt?rym nie mog? si? upora?, a pr?bowa?em kilkana?cie r??nych sposob?w, ale dalej nie dzia?a. Chodzi o sprawdzenie czy pojazd nale?y do gracza je?eli tak to ok je?eli nie to wyrzucenie go z niego. Mam co? takiego lecz to nie dzia?a.
Kod: public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new name[MAX_PLAYER_NAME], vehicleid = GetPlayerVehicleID(playerid);
format(Query, sizeof(Query), "SELECT `owner` FROM `pojazdy` WHERE `owner` = '%s'", PlayerName(playerid));
mysql_query(Query);
mysql_store_result();
mysql_fetch_row(strings);
sscanf(strings, "p<|>s[25]", VehInfo[vehicleid][Owner]);
GetPlayerName(playerid, name, sizeof(name));
if(strcmp(name, VehInfo[vehicleid][Owner], false))
{
SendClientMessage(playerid, -1, "To nie jest tw?j pojazd.");
RemovePlayerFromVehicle(playerid);
}
}
return 1;
}
Z g?ry dzi?ki za pomoc.
Wysłany: 2013-04-19, 16:24
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Widz?, ?e to co? w dese? prywatnych pojazd?w. Musisz mie? te? w tym kodzie warunek sprawdzaj?cy czy pojazd, do kt?rego wsiad? gracz jest prywatny, a tego kodu nie widz?. Poka? jak tworzysz ten pojazd podporz?dkowany tylko jednemu graczowi, oraz poka? struktur? tabeli pojazdy.
Wysłany: 2013-04-19, 17:14
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Tutaj komenda:
Kod: CMD:car(playerid, params[])
{
new Float: PosX, Float: PosY, Float: PosZ, Float: PosA, id;
if(!strlen(params)) return SendClientMessage(playerid, -1, "/car <id>");
GetPlayerPos(playerid, PosX, PosY, PosZ);
GetPlayerFacingAngle(playerid, PosA);
format(Query, sizeof(Query), "INSERT INTO `pojazdy` (Id, Owner, Model, PosX, PosY, PosZ, PosA) VALUES (NULL, '%s', '%d', '%f', '%f', '%f', '%f')", PlayerName(playerid), strval(params), PosX, PosY, PosZ, PosA);
VehInfo[id][Car] = CreateVehicle(strval(params), PosX, PosY, PosZ, PosA, -1, -1, 60*10000);
mysql_query(Query);
format(Query, sizeof(Query), "SELECT * FROM `pojazdy` WHERE `owner` = '%s'", PlayerName(playerid));
mysql_store_result();
mysql_fetch_row(Query);
sscanf(Query, "p<|>e<is[25]iffff>", VehInfo[id]);
format(strings, sizeof(strings), "Owner: %s", VehInfo[id][Owner]);
Vehicle3DText[VehInfo[id][Car]] = Create3DTextLabel(strings, 0x6A9531FF, PosX, PosY, PosZ, 40.0, -1, 0);
Attach3DTextLabelToVehicle(Vehicle3DText[VehInfo[id][Car]], VehInfo[id][Car], 0.0, 0.0, 2.0);
mysql_query(Query);
return 1;
}
A tutaj struktura bazy:
Kod: CREATE TABLE IF NOT EXISTS `pojazdy` (
`Id` int(5) NOT NULL AUTO_INCREMENT,
`Owner` varchar(25) NOT NULL,
`Model` int(5) NOT NULL,
`PosX` float NOT NULL,
`PosY` float NOT NULL,
`PosZ` float NOT NULL,
`PosA` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Wysłany: 2013-04-19, 18:23
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Poka? zmienn? Car oraz enum Vehinfo
Wysłany: 2013-04-19, 18:38
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Kod: enum veh_info
{
ID,
Owner[25],
Model,
Float:Pos[pos_info],
Car,
}
new VehInfo[MAX_VEH][veh_info];
[ Dodano : 2013-04-20, 14:36 ]
+ Mam jeszcze ma?y problemik nie na temat, ale nie chc? zak?ada? nowego tematu.
Mam np. dwie komendy na nadanie broni:
Kod: cmd:bron(playerid, params[])
{
GivePlayerWeapon(playerid, 28, 100);
return 1;
}
//
cmd:bron2(playerid, params[])
{
GivePlayerWeapon(playerid, 29, 20);
return 1;
}
S? to dwie bronie maszynowe micro uzi oraz mp5, lecz problem polega na tym, gdy wpisz? /bron daje mi micro uzi z 100 ammo, a nast?pnie /bron2 daje mp5 lecz ju? z 120 ammo zamiast z 20.., czy da?oby rad? jako? tego unik???
Wysłany: 2013-04-20, 20:00
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Co do drugiego problemu, to u?yj funkcji GetWeaponSlot - ta funkcja nie jest wbudowana w sampa, ale znajdziesz j? na necie. P??niej robisz warunek
Kod: if(GetWeaponSlot(28) == GetWeaponSlot(29)) return SendClientMessage(playerid, -1, "To ta sama bro?!");
Wysłany: 2013-04-20, 20:25
maktawisz
Wiek: 33 Na forum: 4946 dni Posty: 18
Nick w MP: trevor mactawisz
Piwa : 53
strmatch.
Kod: public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
new iVehicleID = GetPlayerVehicleID(playerid),
{
if(!strmatch(vInfo[iVehicleID][Owner], pName(playerid))
{
SendClientMessage(playerid, -1, "To nie jest tw?j pojazd.");
RemovePlayerFromVehicle(playerid);
}
}
return 1;
}
wrzu? gdzie? na d??:
Kod: stock strmatch(const String1[], const String2[])
{
if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1)))
{
return true;
}
else
{
return false;
}
}
stock pName(iPlayer)
{
new
iName[MAX_PLAYER_NAME];
GetPlayerName(iPlayer, iName, sizeof(iName));
return iName;
}
Wysłany: 2013-04-20, 21:30
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Wy?wietli?em sobie na chacie kto jest w?a?cicielem pojazdu wi?c tam gdzie w?a?cicielem by?em ja, nie wyrzuca?o wi?c dobrze, ale by?em w?a?cicielem w nie swoim poje?dzie. Mam nadziej?, ?e dobrze to wyja?ni?em
Wysłany: 2013-04-20, 21:32
maktawisz
Wiek: 33 Na forum: 4946 dni Posty: 18
Nick w MP: trevor mactawisz
Piwa : 53
Poka? wczytywanie/zapisywanie pojazd?w.
Korzysta?e? czasem z tego? gtao.pl.com/showthread.php?t=186495
Wysłany: 2013-04-20, 21:42
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Tak z tego korzysta?em, ale w wczytaniu pojazd?w jest ok poniewa? 3d text nad pojazdem wy?wietla dobrze (w?a?ciciela)
Wysłany: 2013-04-21, 09:23
maktawisz
Wiek: 33 Na forum: 4946 dni Posty: 18
Nick w MP: trevor mactawisz
Piwa : 53
Zr?b to na OnPlayerEnterVehicle, mo?e pomo?e.
Wysłany: 2013-04-21, 11:54
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
Wysłany: 2013-04-21, 13:53
RedC
Wiek: 37 Na forum: 5053 dni Posty: 83
Piwa : 5
No zawsze pr?buj? co? wykombinowa? swojego najpierw, no ale nie wysz?o wi?c postanowi?em u?y? poradnik?w, ale wida?, ?e tam te? ?le. No nic co? pokombinuj?, a wrazie czego napisz? tutaj. Dzi?ki za pomoc ;}
Tagi: system :: pojazdów :: [mysql]
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: