Szerző Téma: Pénz betétele a kocsiba  (Megtekintve 1208 alkalommal)

Pénz betétele a kocsiba
« Dátum: 2014. Április 23. - 15:19:26 »
0 Show voters
Ü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.

Pénz betétele a kocsiba
« Válasz #1 Dátum: 2014. Április 23. - 19:25:57 »
0 Show voters
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!\");
}
}

Pénz betétele a kocsiba
« Válasz #2 Dátum: 2014. Április 23. - 23:51:44 »
0 Show voters
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;
}
« Utoljára szerkesztve: 2014. Április 24. - 14:46:22 írta Campe3r »

Pénz betétele a kocsiba
« Válasz #3 Dátum: 2014. Május 06. - 12:59:34 »
0 Show voters
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:|

Pénz betétele a kocsiba
« Válasz #4 Dátum: 2014. Április 23. - 15:19:26 »
0 Show voters
Ü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.

Pénz betétele a kocsiba
« Válasz #5 Dátum: 2014. Április 23. - 19:25:57 »
0 Show voters
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!\");
}
}

Pénz betétele a kocsiba
« Válasz #6 Dátum: 2014. Április 23. - 23:51:44 »
0 Show voters
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;
}
« Utoljára szerkesztve: 2014. Április 24. - 14:46:22 írta Campe3r »

Pénz betétele a kocsiba
« Válasz #7 Dátum: 2014. Május 06. - 12:59:34 »
0 Show voters
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:|

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal