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: Mokus - 2012. November 13. - 23:50:57

Cím: Taxi Munka 1.1[Javitva]
Írta: Mokus - 2012. November 13. - 23:50:57
Sziasztok megint scripteltem a fórum számára hogy tanuljak a hibáimból hátha ejtek de tuti ejtettem csak nem sikerült 100%-ig tesztelnem mert egyedül teszteltem nem volt teszt társam úgyhogy lehet van benne hiba de át nézegettem nem észleltem hibát vagy csak figyelmetlen voltam
Ez egy taxi rendszer nem nagy durranás ezt csak úgy irtam ezt persze át fogják írni ahogy õk szeretnék pickup,dialog stb... ez engem már nem érdekel én csak meg írtam az alapját hát akkor itt is a kód:
 

#include  <a_samp>
#include  <zcmd>
#include  <sscanf2>
#include  <dini>
#define COLOR_RED 0xff0000AA
new CPStatus[MAX_PLAYERS];
enum TaxiCars
{
taxi1,
taxi2
};
new Taxi[TaxiCars];
public OnFilterScriptInit()
{
Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi2] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);
return 0;
}
 
new szFile[ 40 + 1 ];
public OnPlayerConnect( playerid )
{
CPStatus[playerid] = 0;
format( szFile, sizeof( szFile ), \"Taxi/%s.ini\", szName( playerid ) );
if( dini_Exists( szFile ) )
{
SetPVarInt( playerid, \"Taxi\", dini_Int( szFile, \"Taxi\" ) );
}
else
{
SetPVarInt( playerid, \"Taxi\", 0 );
dini_Create( szFile );
}
return 1;
}
public OnPlayerDisconnect( playerid, reason )
{
format( szFile, sizeof( szFile ), \"Taxi/%s.ini\", szName(playerid));
dini_IntSet( szFile, \"Taxi\", GetPVarInt( playerid, \"Taxi\"));
return 1;
}
stock szName( playerid )
{
static s_szName[ MAX_PLAYER_NAME + 1 ];
GetPlayerName( playerid, s_szName, MAX_PLAYER_NAME );
return s_szName;
}
CMD:dolgozni(playerid,params[])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1)
{
new pName[MAX_PLAYER_NAME];
new string[250];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), \"%s taxi szolgálatba állt\", pName);
SendClientMessage(playerid,COLOR_RED, string);
}
else
{
SendClientMessage(playerid,COLOR_RED,\"Hogy akarsz taxi szolgálatba állni ha nem vagy taxis?\");
}
return 1;
}
CMD:taximunka(playerid,params[])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1) return SendClientMessage(playerid,COLOR_RED,\"Te már taxis vagy\");
SetPVarInt(playerid,\"Taxi\",1);
SendClientMessage(playerid,COLOR_RED,\"Te mostantól taxisként dolgozol kilépéshez felmond\");
return 1;
}
CMD:felmond(playerid,params[])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1)
{
SetPVarInt(playerid,\"Taxi\",0);
SendClientMessage(playerid,COLOR_RED,\"Mostmár nem dolgozol taxisként\");
}
else
{
SendClientMessage(playerid,COLOR_RED,\"Eddig sem voltál taxis\");
}
return 1;
}
CMD:taxihiv(playerid,params[])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1)
{
new pName[MAX_PLAYER_NAME];
new string[46];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), \"%s taxit hívott.\", pName);
SendClientMessageToAll(COLOR_RED, string);
SetPVarInt(playerid,\"Taxihív\",1);
}
return 1;
}
CMD:elfogadtaxi(playerid,params[])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1)
{
if( GetPVarInt( playerid, \"Taxihív\" ) == 1)
{
new Float:X1,Float:Y1,Float:Z1;
new giveplayerid;
if(sscanf(params, \"u\", giveplayerid)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /elfogadtaxi [Játékos]\");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Érvénytelen Játékos ID\");
GetPlayerPos(giveplayerid, X1, Y1, Z1);
SetPlayerCheckpoint(playerid, X1, Y1, Z1, 5);
CPStatus[playerid] = 1;
SetPVarInt(playerid,\"Taxihív\",0);
}
else
{
SendClientMessage(playerid,COLOR_RED,\"A játékos nem hívott taxit\");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,\"Nem vagy taxis\");
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new CarCheck = GetPlayerVehicleID(playerid);
if(CarCheck == Taxi[taxi1] || CarCheck == Taxi[taxi2])
{
if( GetPVarInt( playerid, \"Taxi\" ) == 1)
{
GameTextForPlayer(playerid, \"~g~Elkezdtel dolgozni!\", 3000, 3);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,-1,\"Nem dolgozol taxisként\");
}
}
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
switch(CPStatus[playerid])
{
case 1:
{
SendClientMessage(playerid,COLOR_RED,\"Kimentél az utashoz ezért kaptál 2000Ft-t\");
DisablePlayerCheckpoint(playerid);
GivePlayerMoney(playerid,2000);
}
}
return 1;
}

 
Újítás:
Ha a játékos nem hív taxit akkor nem tudsz hozzá ki menni és pénzt is ad már.
Javitvás:
Az volt a probléma hogy ha 1 volt a rankja 1 re álította na ezt javítottam
Cím: Taxi Munka 1.1[Javitva]
Írta: ZyZu. - 2012. November 14. - 09:03:50
Tetszik, igényes munka látom szereted rendezni :D Felhasználom adtál egy jó ötletett :D És én is ilyet munkát írtam dinivel de már nincs meg :D
Cím: Taxi Munka 1.1[Javitva]
Írta: Depi - 2012. November 14. - 09:24:58
Idézetet írta: ZyZu date=1352880230\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29828\" data-ipsquote-contentclass=\"forums_Topic
Tetszik, igényes munka látom szereted rendezni :D Felhasználom adtál egy jó ötletett :D És én is ilyet munkát írtam dinivel de már nincs meg :D
 
Szerintem nem is nézted át rendesen a kódot..
 
Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi1] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 
Helyett, talán:
 
Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi2] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 
Ez meg esik a CTRL + C és CTRL + V -s mûveleteknél.
Cím: Taxi Munka 1.1[Javitva]
Írta: ZyZu. - 2012. November 14. - 09:43:07
Mi benne a hiba?  :o
Cím: Taxi Munka 1.1[Javitva]
Írta: Depi - 2012. November 14. - 09:49:09
Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi1] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 

Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi2] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 
Illetve, sokkal szebben is ki lehetett volna dolgozni, nem jó az ha kezdõ így tanulja meg.
UP: EZ az átkozott nem rakta bele a színeket, taxi1,taxi1 helyett taxi1,taxi2 esetleg, ha már enumerátorban így lett beleírva.
Cím: Taxi Munka 1.1[Javitva]
Írta: Kovacs_Richard - 2012. November 14. - 10:34:23
Idézetet írta: Draven date=1352882949\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29828\" data-ipsquote-contentclass=\"forums_Topic

Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi1] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 

Taxi[taxi1] = CreateVehicle(420,-209.7638,2608.5227,62.4824,359.4272,6,1,600000);
Taxi[taxi2] = CreateVehicle(420,-213.1385,2608.4824,62.4899,0.2146,6,1,600000);

 
Illetve, sokkal szebben is ki lehetett volna dolgozni, nem jó az ha kezdõ így tanulja meg.
UP: EZ az átkozott nem rakta bele a színeket, taxi1,taxi1 helyett taxi1,taxi2 esetleg, ha már enumerátorban így lett beleírva.
 
én 7 dologra hívtam fel a figyelmét, PM-ben továbbítottam neki, remélhetõleg felrakja hamarosan a javított verziót :)
Cím: Taxi Munka 1.1[Javitva]
Írta: Mokus - 2012. November 14. - 14:46:07
Persze javítom csak nem volt idõm :D köszi az észrevételt nem figyeltem eléggé meg a taxi kocsit gyorsan be raktam mert arra nem volt szükségem csak azért hogy lássák hogy kell :D

Dupla hozzászólás automatikusan összefûzve. ( 2012. November 14. - 15:16:24 )

Na javítva ha még észleltek problémát szoljatok
Cím: Taxi Munka 1.1[Javitva]
Írta: Kovacs_Richard - 2012. November 14. - 15:35:38
írtál PM-ben ezért leírom az észrevételeimet ahogy kérted :D
 
enum TaxiCars
{
    taxi1,
    taxi2
};
new Taxi[TaxiCars];

 
az enum még mindig nem indokolt számomra :)
 
new szFile[ 40 + 1 ];

 
ezt még mindig lokális változónak raknám...
 
new string[250];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), \"%s taxi szolgálatba állt\", pName);

 
max szöveg hossz 23+24=47 szóval a 250 cella még mindig ~5x annyi mint amire szükség van :)
 
switch(CPStatus[playerid])
{
    case 1:
    {
        SendClientMessage(playerid,COLOR_RED,\"Kimentél az utashoz ezért kaptál 2000Ft-t\");
        DisablePlayerCheckpoint(playerid);
        GivePlayerMoney(playerid,2000);
    }
}

 
felesleges a switch ha csak 1 case van :)
Cím: Taxi Munka 1.1[Javitva]
Írta: Mokus - 2012. November 14. - 15:46:19
Így tudom így csináltam így tanították és így is fogom alkalmazni enum ugyan ilyen marad meg minden de köszi majd egyszer máshogy lessz :D
Az string meg azért nagyobb mert sok ember az üzenetet át irja és neki ne legyen hiba ha kezdõ és át irja a szöveget
Cím: Taxi Munka 1.1[Javitva]
Írta: Johnies00 - 2012. November 14. - 16:29:31
Idézetet írta: Mokus date=1352904379\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"29828\" data-ipsquote-contentclass=\"forums_Topic
Így tudom így csináltam így tanították és így is fogom alkalmazni enum ugyan ilyen marad meg minden de köszi majd egyszer máshogy lessz :D
Az string meg azért nagyobb mert sok ember az üzenetet át irja és neki ne legyen hiba ha kezdõ és át irja a szöveget
 
250 cella akkor is felesleges.. Ugyanis ha kivonjuk a 250 bõl a nevet(24) meg a null-t(1) az 225 és 225 karaktert nem fog senki sem beleírni a szkriptbe.

Apróság, viszont ha ezt nem veszed figyelembe és nagyobb módnál/szkriptnél magas cellaszámot használsz azzal csak byte-t veszítesz.
Cím: Taxi Munka 1.1[Javitva]
Írta: Kovacs_Richard - 2012. November 14. - 17:21:09
ennyi erõvel itt is kevés a 7 extra cella :D
 
new string[46];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), \"%s taxit hívott.\", pName);

 
am itt felesleges az enum :) de ha nem tetszik a szám index akkor alkalmazhatod így is:
 
#define TAXI1 0
#define TAXI2 1
new Taxi[2];
 
Taxi[TAXI1];
Taxi[TAXI2];
Cím: Taxi Munka 1.1[Javitva]
Írta: Norby - 2012. November 14. - 17:57:45
Ez elég fura szerintem, mert ugyebár kimegy a Taxis belemegy a Checkpointba és meg is kapja a pénzt, de az még nem azt jelenti hogy el is viszi valahova. :D
Ha kicsit valósághûre akarod csinálni akkor szerintem miután az utas kiszállt azután kapja meg a pénzt. ;)
Cím: Taxi Munka 1.1[Javitva]
Írta: Mokus - 2012. November 14. - 21:26:17
Igaz 1.2 verzióba már meg lessz