Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: 032.Marcus poslato Mart 08, 2014, 21:07:29 POSLE PODNE

Naslov: [POMOC] COS problem
Poruka od: 032.Marcus poslato Mart 08, 2014, 21:07:29 POSLE PODNE
Scripta: Moja od nule
Problem: Evo vec treca tema u vezi COS sistema, i nikako da resim bagove, a na ovom forumu jedino Blakes i C++ pomazu oko scriptanja... Problem je u tome, da kada kupim vozilo, i hocu da ga parkiram/prodam pise da nisam u svom vozilu, ovo se desava kad je vise igraca na serveru i kada razliciti igraci kupuju. Kad sam sam, i kupim vozilo, onda radi... Evo starih tema, da vidite kakve su bile komande, a sta sam izmenio, i opet nece... Pomozite mi da resim ovo molim vas, da zavrsim sa najtezim delom -.-

http://balkan-samp.com/forum/index.php?topic=86079.msg580008#msg580008
http://balkan-samp.com/forum/index.php?topic=86201.msg580873#msg580873

Code:
YCMD:kupivozilo(playerid, params[], help)
{
#pragma unused help
new vID = GetPlayerVehicleID(playerid);
new vMDL = GetVehicleModel(vID);
new vehicle = 1;
if(!IsASalesVehicle(vID)) return SCM(playerid, -1, ""CRVENA"GoMilano"BELA": Ovo vozilo nije na prodaju.");
if(PlayerInfo[playerid][pVehicle1] != 999 && PlayerInfo[playerid][pVehicle2] != 999 && PlayerInfo[playerid][pVehicle3] != 999) return SCM(playerid, -1, ""CRVENA"GoMilano"BELA": Ne mozete kupiti vise vozila.");
if(GetPlayerMoney(playerid) < GetVehiclePrice(vID)) return SCM(playerid, -1, ""CRVENA"GoMilano"BELA": Nemate dovoljno novca da bi kupili ovo vozilo.");

/*for(new i = 0 ; i < sizeof(VehicleInfo); i++)
{
    if(!fexist(CarPath(i)))
vehicle = i;
break;
}*/

for(new v = 1; v < sizeof(VehicleInfo); v++)
{
if(VehicleInfo[v][vOwned] == 0)
{
vehicle = v;
break;
}
}
if(PlayerInfo[playerid][pVehicle1] == 999)
{
PlayerInfo[playerid][pVehicle1] = vMDL;
PlayerInfo[playerid][pVehicle1ControlID] = vehicle;
}
else if(PlayerInfo[playerid][pVehicle2] == 999)
{
PlayerInfo[playerid][pVehicle2] = vMDL;
PlayerInfo[playerid][pVehicle2ControlID] = vehicle;
}
else if(PlayerInfo[playerid][pVehicle3] == 999)
{
PlayerInfo[playerid][pVehicle3] = vMDL;
PlayerInfo[playerid][pVehicle3ControlID] = vehicle;
}
else { return 1;}

new model[64];
GetVehicleName(vMDL, model, sizeof(model));

VehicleInfo[vehicle][vOwned] = 1;
VehicleInfo[vehicle][vOwner] = RemoveUnderScore(playerid);
    VehicleInfo[vehicle][vModel] = vMDL;
    VehicleInfo[vehicle][vParkX] = 1590.3740;
    VehicleInfo[vehicle][vParkY] = -1026.0565;
    VehicleInfo[vehicle][vParkZ] = 30.9063;
    VehicleInfo[vehicle][vParkA] = 317.1649;
    VehicleInfo[vehicle][vColor1] = 1;
    VehicleInfo[vehicle][vColor2] = 1;
    VehicleInfo[vehicle][vLocked] = 1;
    VehicleInfo[vehicle][vRegistration] = 0;
    VehicleInfo[vehicle][vControlID] = vehicle;

    OwnedVehicle[vehicle] = CreateVehicle(vMDL, VehicleInfo[vehicle][vParkX], VehicleInfo[vehicle][vParkY], VehicleInfo[vehicle][vParkZ], VehicleInfo[vehicle][vParkA], VehicleInfo[vehicle][vColor1], VehicleInfo[vehicle][vColor2], -1);
SCM(playerid, -1, ""CRVENA"GoMilano"BELA": Kupili ste vozilo. Idite na parking kod banke i preuzmite ga.");
GivePlayerMoney(playerid, -GetVehiclePrice(vID));

SavePlayer(playerid);
SaveVehicle(vehicle);
return 1;
}

YCMD:prodajvozilo(playerid, params[], help)
{
#pragma unused help
new slot, vID;
vID = GetPlayerVehicleID(playerid);
if(sscanf(params, "i", slot)) return SCM(playerid, -1, ""CRVENA"KORISCENJE"BELA": /prodajvozilo [slot]");
switch(slot)
{
    case 1:
    {
    if(PlayerInfo[playerid][pVehicle1] == 999) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Nemate vozilo na prvom slotu.");
    if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vozilu.");
if(VehicleInfo[vID][vControlID] != PlayerInfo[playerid][pVehicle1ControlID]) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vasem vozilu.");
PlayerInfo[playerid][pVehicle1] = 999;
PlayerInfo[playerid][pVehicle1ControlID] = 999;
VehicleInfo[vID][vOwned] = 0;
VehicleInfo[vID][vOwner] = 0;
VehicleInfo[vID][vParkX] = 1590.3740;
VehicleInfo[vID][vParkY] = -1026.0565;
VehicleInfo[vID][vParkZ] = 23.9063;
VehicleInfo[vID][vParkA] = 317.1649;
VehicleInfo[vID][vLocked] = 0;
VehicleInfo[vID][vRegistration] = 0;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
TogglePlayerControllable(playerid, 1);
SavePlayer(playerid);
    }
        case 2:
    {
    if(PlayerInfo[playerid][pVehicle2] == 999) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Nemate vozilo na prvom slotu.");
    if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vozilu.");
if(VehicleInfo[vID][vControlID] != PlayerInfo[playerid][pVehicle2ControlID]) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vasem vozilu.");
PlayerInfo[playerid][pVehicle2] = 999;
PlayerInfo[playerid][pVehicle2ControlID] = 999;
VehicleInfo[vID][vOwned] = 0;
VehicleInfo[vID][vOwner] = 0;
VehicleInfo[vID][vParkX] = 1590.3740;
VehicleInfo[vID][vParkY] = -1026.0565;
VehicleInfo[vID][vParkZ] = 23.9063;
VehicleInfo[vID][vParkA] = 317.1649;
VehicleInfo[vID][vLocked] = 0;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
TogglePlayerControllable(playerid, 1);
SavePlayer(playerid);
    }
    case 3:
    {
    if(PlayerInfo[playerid][pVehicle3] == 999) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Nemate vozilo na prvom slotu.");
    if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vozilu.");
if(VehicleInfo[vID][vControlID] != PlayerInfo[playerid][pVehicle3ControlID]) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vasem vozilu.");
PlayerInfo[playerid][pVehicle3] = 999;
PlayerInfo[playerid][pVehicle3ControlID] = 999;
VehicleInfo[vID][vOwned] = 0;
VehicleInfo[vID][vOwner] = 0;
VehicleInfo[vID][vParkX] = 1590.3740;
VehicleInfo[vID][vParkY] = -1026.0565;
VehicleInfo[vID][vParkZ] = 23.9063;
VehicleInfo[vID][vParkA] = 317.1649;
VehicleInfo[vID][vLocked] = 0;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
TogglePlayerControllable(playerid, 1);
SavePlayer(playerid);
    }
}
SavePlayer(playerid);
return 1;
}

YCMD:parkirajvozilo(playerid, params[], help)
{
#pragma unused help
new vID, vMDL, Float:X, Float:Y, Float:Z;
vID = GetPlayerVehicleID(playerid);
vMDL = GetVehicleModel(vID);
if(PlayerInfo[playerid][pVehicle1] == 999 && PlayerInfo[playerid][pVehicle2] == 999 && PlayerInfo[playerid][pVehicle3] == 999) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Nemate vozilo.");
if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vozilu.");
if(VehicleInfo[vID][vControlID] == PlayerInfo[playerid][pVehicle1ControlID])
{
    GetVehiclePos(vID, X, Y, Z);
    VehicleInfo[vID][vParkX] = X;
VehicleInfo[vID][vParkY] = Y;
VehicleInfo[vID][vParkZ] = Z;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
OwnedVehicle[vID] = CreateVehicle(vMDL, VehicleInfo[vID][vParkX], VehicleInfo[vID][vParkY], VehicleInfo[vID][vParkZ], VehicleInfo[vID][vParkA], VehicleInfo[vID][vColor1], VehicleInfo[vID][vColor2], -1);
TogglePlayerControllable(playerid, 1);
SCM(playerid, -1, ""NARANDZASTA"Parkirali ste vase vozilo.");
}
else if(VehicleInfo[vID][vControlID] == PlayerInfo[playerid][pVehicle2ControlID])
{
    GetVehiclePos(vID, X, Y, Z);
    VehicleInfo[vID][vParkX] = X;
VehicleInfo[vID][vParkY] = Y;
VehicleInfo[vID][vParkZ] = Z;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
OwnedVehicle[vID] = CreateVehicle(vMDL, VehicleInfo[vID][vParkX], VehicleInfo[vID][vParkY], VehicleInfo[vID][vParkZ], VehicleInfo[vID][vParkA], VehicleInfo[vID][vColor1], VehicleInfo[vID][vColor2], -1);
TogglePlayerControllable(playerid, 1);
SCM(playerid, -1, ""NARANDZASTA"Parkirali ste vase vozilo.");
}
else if(VehicleInfo[vID][vControlID] == PlayerInfo[playerid][pVehicle3ControlID])
{
    GetVehiclePos(vID, X, Y, Z);
    VehicleInfo[vID][vParkX] = X;
VehicleInfo[vID][vParkY] = Y;
VehicleInfo[vID][vParkZ] = Z;
RemovePlayerFromVehicle(playerid);
DestroyVehicle(vID);
OwnedVehicle[vID] = CreateVehicle(vMDL, VehicleInfo[vID][vParkX], VehicleInfo[vID][vParkY], VehicleInfo[vID][vParkZ], VehicleInfo[vID][vParkA], VehicleInfo[vID][vColor1], VehicleInfo[vID][vColor2], -1);
TogglePlayerControllable(playerid, 1);
SCM(playerid, -1, ""NARANDZASTA"Parkirali ste vase vozilo.");
}
else return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vasem vozilu.");
return 1;
}
Naslov: Odg: [POMOC] COS problem
Poruka od: 032.Marcus poslato Mart 09, 2014, 11:01:00 PRE PODNE
Bump!
Naslov: Odg: [POMOC] COS problem
Poruka od: [MG]uNiqu3 poslato Mart 09, 2014, 14:24:25 POSLE PODNE
Problem je u tome sto ti kupis auto sa id-om 30 i postavis varijabla vehicle1 na 30 i sada kad ti prodas uniatis auto ono taj id postavi na drugi auto isto se desava i sa park vehicle kad ga parkiras unistis ga i dodelis novi id i update mu varijablu sa novim id probaj tako ako si me razumeo.
Naslov: Odg: [POMOC] COS problem
Poruka od: 032.Marcus poslato Mart 09, 2014, 14:37:04 POSLE PODNE
Cek, nisam te razumeo, kako mislis? Moze primer ?
http://pastebin.com/4ge7LmYs
http://pastebin.com/hmc0rDwU

Vidis kako je na Ravensu komanda za kupovinu i za prodaju...
A ja sam COS radio po ovom tutu, samo izmenio

http://balkan-samp.com/forum/index.php?topic=82972.0
Naslov: Odg: [POMOC] COS problem
Poruka od: 032.Marcus poslato Mart 09, 2014, 18:12:35 POSLE PODNE
Izvinjavam se za dupli post, uspeo sam da resim ovo, ja mislim...
Koristio sam if(strcmp(sendername, VehicleInfo[vID][vOwner], true) == 0)

Sad me zanima kako bih mogao da napravim proveru da li je igrac blizu svog vozila? Kako da dobijem ID vozila ciji je vlasnik igrac ?? Ako me razumete sta hocu da kazem.
I jos ovo, kada kupim vozilo, i udjem u njega, za Vlasnik: stoji prazno, a kada restartujem server, posle toga pise vlasnik:

OnPlayerEnterVehicle:
if(IsAOwnedVehicle(vehicleid))
{
    format(str, sizeof(str), ""SVETLOPLAVA"Ulazite u %s ( %d ). Vlasnik: %s", vehiclename, vehicleid, VehicleInfo[vehicleid][vOwner]);
    SCM(playerid, -1, str);
}


forward IsAOwnedVehicle(vehicleid);
public IsAOwnedVehicle(vehicleid)
{
   for(new i = 0; i < sizeof(OwnedVehicle); i++)
   {
      if(vehicleid == OwnedVehicle[i]) return 1;
   }
   return 0;
}


A u kupi vozilo mi stoji ovo:
OwnedVehicle[vehicle] = CreateVehicle(vMDL, VehicleInfo[vehicle][vParkX], VehicleInfo[vehicle][vParkY], VehicleInfo[vehicle][vParkZ], VehicleInfo[vehicle][vParkA], VehicleInfo[vehicle][vColor1], VehicleInfo[vehicle][vColor2], -1);
Naslov: Odg: [POMOC] COS problem
Poruka od: youngdeal poslato Mart 09, 2014, 19:50:20 POSLE PODNE
stock GetPosBehindVehicle(vehicleid, &Float:x, &Float:y, &Float:z, Float:offset=0.5)
{
    new Float:vehicleSize[3], Float:vehiclePos[3];
    GetVehiclePos(vehicleid, vehiclePos[0], vehiclePos[1], vehiclePos[2]);
    GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, vehicleSize[0], vehicleSize[1], vehicleSize[2]);
    GetXYBehindVehicle(vehicleid, vehiclePos[0], vehiclePos[1], (vehicleSize[1]/2)+offset);
    x = vehiclePos[0];
    y = vehiclePos[1];
    z = vehiclePos[2];
    return 1;
}


onda koristis upit sa ovom proverom

ovo da vidis koji je id pod onplayerentervehicle loopas kroz sva vozila i samo saljes poruku
Naslov: Odg: [POMOC] COS problem
Poruka od: 032.Marcus poslato Mart 09, 2014, 19:53:57 POSLE PODNE
Aha, probacu. Nego imam problem, ne znam da li si video PM, da mi ove komande rade tek kad restartujem server, park, prodaj itd... Dok ne restartujem, ipse da nisam u svom vozilu..