GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Sramm - 2014. május 02. - 21:24:01

Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 02. - 21:24:01

Sramm\'s Vehicle Radio BETA


 

Miért béta?
Publikálom egyenlõre nagyon béta includem, fõleg arra, hogy valaki tesztelje a mûködését, mert nekem nincs rá módom, és jelentgesse nekem a bugokat, vagy hogy egyáltalán mûködik -e, viszonylag részletes beszámolóval - mit csinál, stb.
Mit is tud?
A lényege annyi, hogy a jármûben aktiválja a rádiót, és azt hallani lehet kívül is, belül is. Ahogy távolodunk egyre halkabb, közvetlen mellette pedig hangosabb.
Funkciók, használat
 
VehicleRadio(vehicleid,link[],bool:turn);

 
Paraméterek:
vehicleid - A jármû ID-je, amelynek a rádióját szeretnénk elindítani.
link[] - A zene/rádió linkje
bool:turn - Rádió be/ki
Példa:
 
#include <a_samp>
#include <zcmd>
CMD:playtimber(playerid) //mondjuk elindítjuk pitbulltól és keshatól a timbert..
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"http://dl.ttbax.org/Hamid/Music/1392/07/Pitbull%20feat.%20Ke$ha%20-%20Timber%5B128%5D.mp3\",true); //true, azaz bekapcsoljuk. ha már be van kapcsolva, akkor csak sávot vált.
return 1;
}
CMD:stopradio(playerid)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"\",false); //false, azaz kikapcsoljuk
return 1;
}

 
Letöltés
(Egyenlõre csak kód formátumban)



#if !defined include_vehicle_radio
#define include_vehicle_radio
#endif
#define RADIO_DISTANCE 40.0
new RadioTimer = -1;
new RadioActive[MAX_PLAYERS][2];
enum RadioEN
{
Float:VRposX,
Float:VRposY,
Float:VRposZ,
mode
};
new VRadio[MAX_VEHICLES][RadioEN];
stock VehicleRadio(vehicleid,link[],bool:turn)
{
if(turn)
{
if(RadioTimer == -1) RadioTimer = SetTimerEx(\"VehicleRadioTimer\",1000,1,\"s[256]\",link);
VRadio[vehicleid][mode] = 1;
GetVehiclePos(vehicleid,VRadio[vehicleid][VRposX],VRadio[vehicleid][VRposY],VRadio[vehicleid][VRposZ]);
}
else
{
VRadio[vehicleid][mode] = 0;
}
return 1;
}
stock GetClosestVehicleEx(playerid,Float:dis = RADIO_DISTANCE)
{   
new Float:distance[2] = 0.0,bool:count;
distance[1] = dis;
new vehicleid;
for(new i; i<MAX_VEHICLES; i++)
{
if(VRadio[mode] == 1)
{
   new Float:pos[3];
   GetVehiclePos(i,pos[0],pos[1],pos[2]);
   distance[0] = GetPlayerDistanceFromPoint(playerid, pos[0],pos[1],pos[2]);
   if(distance[0] < distance[1])
   {
      count = true;
      distance[1] = distance[0];
      vehicleid = i;
   }
}
}
if(distance[1] == dis && count == false) return INVALID_VEHICLE_ID;
return vehicleid;
}
 
forward VehicleRadioTimer(link[]);   
public VehicleRadioTimer(link[])
{
new Float:pos[3];
for(new i; i<MAX_PLAYERS; i++)
{
if(RadioActive[0] == 0)
{
   new v = GetClosestVehicleEx(i);
   if(v != -1)
   {
      GetVehiclePos(v,VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ]);
      PlayAudioStreamForPlayer(i, link, VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ], RADIO_DISTANCE);
      RadioActive[0] = 1;
      RadioActive[1] = v;
   }
}
else
{
   new v = RadioActive[1];
   GetVehiclePos(v,pos[0],pos[1],pos[2]);
   new Float:dis = GetPlayerDistanceFromPoint(i, pos[0],pos[1],pos[2]);
   if(dis > RADIO_DISTANCE)
   {
      StopAudioStreamForPlayer(i);
      RadioActive[0] = 0;
      RadioActive[1] = -1;
   }
}
}
return 1;
}
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: KovaNovik - 2014. május 02. - 21:54:22
Ember! SAMP-ban halkítod a zenét? Mivel? Mert, ha tényleg megcsináltad, akkor lábat csókolok, nagyon régen kerestem ilyesmit. De tényleg.
Ba.kki ez magától halkul. Csak ezt az egy paramétert nem írtam oda fél éve! Mindenesetre jó kis INC, repült egy +! :D
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 02. - 21:57:12
Az alap funkció, PlayAudioStreamForPlayer pozíciós paraméterei alapból tartalmazzák ezt :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: [LOL]Adam_HUN - 2014. május 04. - 10:33:33
Mivel nem vagyok nagy scriopter, ez most jól jött nekem  :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: akosd127 - 2014. május 07. - 02:42:57
Fasza majd tesztelgetem ha lesz rá idõm :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: ZyZu. - 2014. május 07. - 05:59:30
Szép! Micsoda véletlen.. én is elkezdtem írni egy hasonló szkriptet még pár hónapja csak lusta voltam befejezni. :D Tetszik ez a megoldás, hogy mindent includeban írsz \'nem pawn\'.
Illetve egy hiba.. mivel tudom lesz olyan felhasználó aki rákérdezi, hogy miért hibás.. Elfelejtetted kiírni a példa szkriptem ezt:
 
#include audioincneve

 
Tudom alap de ezekbõl is jönnek tudod segítségkérések. Szép munka.  ;)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 10. - 10:15:06
Igen valoban, koszi, geprol javito. Orulok, hogy tetszik :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 02. - 21:24:01

Sramm\'s Vehicle Radio BETA


 

Miért béta?
Publikálom egyenlõre nagyon béta includem, fõleg arra, hogy valaki tesztelje a mûködését, mert nekem nincs rá módom, és jelentgesse nekem a bugokat, vagy hogy egyáltalán mûködik -e, viszonylag részletes beszámolóval - mit csinál, stb.
Mit is tud?
A lényege annyi, hogy a jármûben aktiválja a rádiót, és azt hallani lehet kívül is, belül is. Ahogy távolodunk egyre halkabb, közvetlen mellette pedig hangosabb.
Funkciók, használat
 
VehicleRadio(vehicleid,link[],bool:turn);

 
Paraméterek:
vehicleid - A jármû ID-je, amelynek a rádióját szeretnénk elindítani.
link[] - A zene/rádió linkje
bool:turn - Rádió be/ki
Példa:
 
#include <a_samp>
#include <zcmd>
CMD:playtimber(playerid) //mondjuk elindítjuk pitbulltól és keshatól a timbert..
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"http://dl.ttbax.org/Hamid/Music/1392/07/Pitbull%20feat.%20Ke$ha%20-%20Timber%5B128%5D.mp3\",true); //true, azaz bekapcsoljuk. ha már be van kapcsolva, akkor csak sávot vált.
return 1;
}
CMD:stopradio(playerid)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,-1,\"Nem vagy a vezetõ ülésen.\");
VehicleRadio(GetPlayerVehicleID(playerid),\"\",false); //false, azaz kikapcsoljuk
return 1;
}

 
Letöltés
(Egyenlõre csak kód formátumban)



#if !defined include_vehicle_radio
#define include_vehicle_radio
#endif
#define RADIO_DISTANCE 40.0
new RadioTimer = -1;
new RadioActive[MAX_PLAYERS][2];
enum RadioEN
{
Float:VRposX,
Float:VRposY,
Float:VRposZ,
mode
};
new VRadio[MAX_VEHICLES][RadioEN];
stock VehicleRadio(vehicleid,link[],bool:turn)
{
if(turn)
{
if(RadioTimer == -1) RadioTimer = SetTimerEx(\"VehicleRadioTimer\",1000,1,\"s[256]\",link);
VRadio[vehicleid][mode] = 1;
GetVehiclePos(vehicleid,VRadio[vehicleid][VRposX],VRadio[vehicleid][VRposY],VRadio[vehicleid][VRposZ]);
}
else
{
VRadio[vehicleid][mode] = 0;
}
return 1;
}
stock GetClosestVehicleEx(playerid,Float:dis = RADIO_DISTANCE)
{   
new Float:distance[2] = 0.0,bool:count;
distance[1] = dis;
new vehicleid;
for(new i; i<MAX_VEHICLES; i++)
{
if(VRadio[mode] == 1)
{
   new Float:pos[3];
   GetVehiclePos(i,pos[0],pos[1],pos[2]);
   distance[0] = GetPlayerDistanceFromPoint(playerid, pos[0],pos[1],pos[2]);
   if(distance[0] < distance[1])
   {
      count = true;
      distance[1] = distance[0];
      vehicleid = i;
   }
}
}
if(distance[1] == dis && count == false) return INVALID_VEHICLE_ID;
return vehicleid;
}
 
forward VehicleRadioTimer(link[]);   
public VehicleRadioTimer(link[])
{
new Float:pos[3];
for(new i; i<MAX_PLAYERS; i++)
{
if(RadioActive[0] == 0)
{
   new v = GetClosestVehicleEx(i);
   if(v != -1)
   {
      GetVehiclePos(v,VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ]);
      PlayAudioStreamForPlayer(i, link, VRadio[v][VRposX],VRadio[v][VRposY],VRadio[v][VRposZ], RADIO_DISTANCE);
      RadioActive[0] = 1;
      RadioActive[1] = v;
   }
}
else
{
   new v = RadioActive[1];
   GetVehiclePos(v,pos[0],pos[1],pos[2]);
   new Float:dis = GetPlayerDistanceFromPoint(i, pos[0],pos[1],pos[2]);
   if(dis > RADIO_DISTANCE)
   {
      StopAudioStreamForPlayer(i);
      RadioActive[0] = 0;
      RadioActive[1] = -1;
   }
}
}
return 1;
}
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: KovaNovik - 2014. május 02. - 21:54:22
Ember! SAMP-ban halkítod a zenét? Mivel? Mert, ha tényleg megcsináltad, akkor lábat csókolok, nagyon régen kerestem ilyesmit. De tényleg.
Ba.kki ez magától halkul. Csak ezt az egy paramétert nem írtam oda fél éve! Mindenesetre jó kis INC, repült egy +! :D
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 02. - 21:57:12
Az alap funkció, PlayAudioStreamForPlayer pozíciós paraméterei alapból tartalmazzák ezt :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: [LOL]Adam_HUN - 2014. május 04. - 10:33:33
Mivel nem vagyok nagy scriopter, ez most jól jött nekem  :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: akosd127 - 2014. május 07. - 02:42:57
Fasza majd tesztelgetem ha lesz rá idõm :)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: ZyZu. - 2014. május 07. - 05:59:30
Szép! Micsoda véletlen.. én is elkezdtem írni egy hasonló szkriptet még pár hónapja csak lusta voltam befejezni. :D Tetszik ez a megoldás, hogy mindent includeban írsz \'nem pawn\'.
Illetve egy hiba.. mivel tudom lesz olyan felhasználó aki rákérdezi, hogy miért hibás.. Elfelejtetted kiírni a példa szkriptem ezt:
 
#include audioincneve

 
Tudom alap de ezekbõl is jönnek tudod segítségkérések. Szép munka.  ;)
Cím: Vehicle Radio (Jármû rádió) BETA
Írta: Sramm - 2014. május 10. - 10:15:06
Igen valoban, koszi, geprol javito. Orulok, hogy tetszik :)