-
Üdv!
Azt szeretném megoldani hogy lenne egy olyan parancs hogy /pénzberak vagy valami hasonló és akkor bepakolna pénzt a legközelebbi kocsiba. Nem muszáj elmenteni úgy hogy szerver resi után is benne legyen, csak ideiglenesen.
-
Valahogy így képzeltem el..
a baj csak ott van, hogy hová mentsem el hogy mennyi pénzt rakott be az illetõ a kocsiba.. illetve.. ott, hogy azt hogyan lehet kivenni..
tehát.. megvan maga a pénzelvevõs sztori. jelen pillanatban annyit csinál, hogy ha áll a közeledben egy kocsi akkor elveszi az összes pénzed xD
nem tudom hogy milyen változóval kellene lementeni a kocsiban tárolt pénzt, melyet majd késpbb (a /kivesz) parancsnál elõ lehet hívni ÚGY, hogy ne keveredjen a többi autóval.. tehát ha az X autóban van Y pénz, és te a Z autó mellett állsz, ne adja oda az X autóban tárolt pénz összeget..
kicsit bonyolultabb, és nincs kedvem, se idõm ehhez.. :smokin:
if (strcmp(\"/berak\", cmdtext, true, 10) == 0)
{
new Float:kocsiX, Float:kocsiY, Float:kocsiZ;
for(new a = 0; a < MAX_VEHICLES; a++)
{
GetVehiclePos(a, kocsiX, kocsiY, kocsiZ);
GetVehicleModel(a);
if(IsPlayerInRangeOfPoint(a, 1.0, kocsiX+5, kocsiY, kocsiZ))
{
new penze = GetPlayerMoney(playerid);
GivePlayerMoney(playerid, -penze);
}
SendClientMessage(playerid, -1, \"Nincs a közeledben egy autó sem!\");
}
}
-
Holnap délután megírom neked ideiglenes mentéssel, most fáradt vagyok :)
E.: Tessék, megírtam neked :)
Szükséges: sscanf, zcmd
Itt az enum, az ideiglenes tárolásra
Tedd a gm-ed/script-ed elejére
enum KocsiInfoEnum
{
KocsiPenz //Ha menteni szeretnél ezt kösd rá a dinire/mysqlre
}
new KocsiInfo[MAX_VEHICLES][KocsiInfoEnum];
Betesz parancs
CMD:betesz(playerid, params[])
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Penz;
new String[256];
new Float:x, Float:y, Float:z;
if(sscanf(params, \"i\", Penz)) return SendClientMessage(playerid, -1, \"Használat: /betesz [összeg]\");
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
if(Penz <= GetPlayerMoney(playerid))
{
GivePlayerMoney(playerid, -Penz);
KocsiInfo[KocsiPenz] += Penz;
format(String, sizeof(String), \"Betettél a kocsiba %i$-t.\", Penz);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"Nincs nálad elég pénz!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
return 1;
}
Ezzel megnézheted, hogy mennyi pénz van a kocsiban.
CMD:kocsipenz(playerid, params[])
{
new String[256];
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
format(String, sizeof(String), \"A kocsiban %i$ van.\", KocsiInfo[KocsiPenz]);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
}
Ezzel veszed ki a pénz a kocsiból.
CMD:kivesz(playerid, params[])
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Penz;
new String[256];
new Float:x, Float:y, Float:z;
if(sscanf(params, \"i\", Penz)) return SendClientMessage(playerid, -1, \"Használat: /kivesz [összeg]\");
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
if(Penz <= KocsiInfo[KocsiPenz])
{
GivePlayerMoney(playerid, Penz);
KocsiInfo[KocsiPenz] -= Penz;
format(String, sizeof(String), \"Kivettél a kocsiból %i$-t.\", Penz);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"A kocsiban nincs ennyi pénz!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
return 1;
}
E nélkül meg nem mûködne(elnézést, ha van valami más módszer e nélkül)
Tedd a gm-ed/script-ed végére
stock IsVehicleInRangeOfPoint(vehicleid, Float:radi, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
-
Hello én beraktam , modomba kipróbálni , és amikor raknék be , akkor leveszi a pénzt , de végig floodolja hogy nem vagy kocsi közelébe:|
-
Üdv!
Azt szeretném megoldani hogy lenne egy olyan parancs hogy /pénzberak vagy valami hasonló és akkor bepakolna pénzt a legközelebbi kocsiba. Nem muszáj elmenteni úgy hogy szerver resi után is benne legyen, csak ideiglenesen.
-
Valahogy így képzeltem el..
a baj csak ott van, hogy hová mentsem el hogy mennyi pénzt rakott be az illetõ a kocsiba.. illetve.. ott, hogy azt hogyan lehet kivenni..
tehát.. megvan maga a pénzelvevõs sztori. jelen pillanatban annyit csinál, hogy ha áll a közeledben egy kocsi akkor elveszi az összes pénzed xD
nem tudom hogy milyen változóval kellene lementeni a kocsiban tárolt pénzt, melyet majd késpbb (a /kivesz) parancsnál elõ lehet hívni ÚGY, hogy ne keveredjen a többi autóval.. tehát ha az X autóban van Y pénz, és te a Z autó mellett állsz, ne adja oda az X autóban tárolt pénz összeget..
kicsit bonyolultabb, és nincs kedvem, se idõm ehhez.. :smokin:
if (strcmp(\"/berak\", cmdtext, true, 10) == 0)
{
new Float:kocsiX, Float:kocsiY, Float:kocsiZ;
for(new a = 0; a < MAX_VEHICLES; a++)
{
GetVehiclePos(a, kocsiX, kocsiY, kocsiZ);
GetVehicleModel(a);
if(IsPlayerInRangeOfPoint(a, 1.0, kocsiX+5, kocsiY, kocsiZ))
{
new penze = GetPlayerMoney(playerid);
GivePlayerMoney(playerid, -penze);
}
SendClientMessage(playerid, -1, \"Nincs a közeledben egy autó sem!\");
}
}
-
Holnap délután megírom neked ideiglenes mentéssel, most fáradt vagyok :)
E.: Tessék, megírtam neked :)
Szükséges: sscanf, zcmd
Itt az enum, az ideiglenes tárolásra
Tedd a gm-ed/script-ed elejére
enum KocsiInfoEnum
{
KocsiPenz //Ha menteni szeretnél ezt kösd rá a dinire/mysqlre
}
new KocsiInfo[MAX_VEHICLES][KocsiInfoEnum];
Betesz parancs
CMD:betesz(playerid, params[])
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Penz;
new String[256];
new Float:x, Float:y, Float:z;
if(sscanf(params, \"i\", Penz)) return SendClientMessage(playerid, -1, \"Használat: /betesz [összeg]\");
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
if(Penz <= GetPlayerMoney(playerid))
{
GivePlayerMoney(playerid, -Penz);
KocsiInfo[KocsiPenz] += Penz;
format(String, sizeof(String), \"Betettél a kocsiba %i$-t.\", Penz);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"Nincs nálad elég pénz!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
return 1;
}
Ezzel megnézheted, hogy mennyi pénz van a kocsiban.
CMD:kocsipenz(playerid, params[])
{
new String[256];
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i = 0; i < MAX_VEHICLES; i++)
{
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
format(String, sizeof(String), \"A kocsiban %i$ van.\", KocsiInfo[KocsiPenz]);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
}
Ezzel veszed ki a pénz a kocsiból.
CMD:kivesz(playerid, params[])
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Penz;
new String[256];
new Float:x, Float:y, Float:z;
if(sscanf(params, \"i\", Penz)) return SendClientMessage(playerid, -1, \"Használat: /kivesz [összeg]\");
GetPlayerPos(playerid, x, y, z);
if(IsVehicleInRangeOfPoint(i, 5.0, x, y, z))
{
if(Penz <= KocsiInfo[KocsiPenz])
{
GivePlayerMoney(playerid, Penz);
KocsiInfo[KocsiPenz] -= Penz;
format(String, sizeof(String), \"Kivettél a kocsiból %i$-t.\", Penz);
SendClientMessage(playerid, -1, String);
}
else
{
SendClientMessage(playerid, -1, \"A kocsiban nincs ennyi pénz!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy kocsi közelében!\");
}
}
return 1;
}
E nélkül meg nem mûködne(elnézést, ha van valami más módszer e nélkül)
Tedd a gm-ed/script-ed végére
stock IsVehicleInRangeOfPoint(vehicleid, Float:radi, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
-
Hello én beraktam , modomba kipróbálni , és amikor raknék be , akkor leveszi a pénzt , de végig floodolja hogy nem vagy kocsi közelébe:|