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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: BVZS - 2012. Augusztus 04. - 23:13:07

Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 04. - 23:13:07
Helló, olyan problémám van, hogy mikor valaki beül egy jármûbe, kimutatja az üzemanyag mérõt, mikor beül egy másik játékos egy másik jármûbe, akkor a mutató mind a két játékos jármûvének az üzemanyagát mutatja össze vissza. Azt sejtem, mintha az üzemanyag nem csak a kifejezett játékos jármûvéhez van rendelve hanem mindenkiéhez. Így néz ki:
 
if(gGas[playerid] == 1)
{
   new str[10];
   format(str,10,\"%d%\",Gas[vehicle]);
   TextDrawSetString(Benzin,str);
   TextDrawShowForPlayer(playerid,Benzin);
}
TextDrawShowForPlayer(playerid, Benzin);if(newstate == PLAYER_STATE_DRIVER)
{
public CheckGas()
{
new string[256];
for(new i=0;i<MAX_PLAYERS;i++)
{
       if(IsPlayerConnected(i))
          {
              if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
              {
             new vehicle = GetPlayerVehicleID(i);
           if(Gas[vehicle] >= 1)
         {
             if(Gas[vehicle] <= 10)
          {
               PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0);
               if(gGas == 0) {
                  GameTextForPlayer(i,\"~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Kevés~w~ az üzemanyag\",5000,3);
            }
          }
             if(gGas == 1) {
             if(IsAPlane(vehicle) || IsABoat(vehicle) || IsABike(vehicle) || IsAHarvest(vehicle) || IsADrugHarvest(vehicle) || IsASweeper(vehicle))
             {
               format(string, sizeof(string), \"N/A\");
         }
         else
         {
                        format(string, sizeof(string), \"%d%\",Gas[vehicle]);
         }
            TextDrawSetString(Benzin,string); }
         if(IsAPlane(vehicle) || IsABoat(vehicle) || IsABike(vehicle) || IsAHarvest(vehicle) || IsADrugHarvest(vehicle) || IsASweeper(vehicle) || engineOn[vehicle] == 0) { Gas[vehicle]++; }
                 Gas[vehicle]--;
         }
            else
              {
                 NoFuel = 1;
                 TogglePlayerControllable(i, 0);
           GameTextForPlayer(i,\"~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Kifogyott~w~ az üzemanyag~n~ a jármûbõl!\",1500,3);
      }
   }
       }
}
return 1;
}
Cím: Üzemanyag
Írta: Zsolesszka - 2012. Augusztus 04. - 23:18:12
Egyszerû a hiba oka.
Egy darab textdrawot akarsz több játékosnak egy idõben más tartalommal megmutatni.
(Mintha egy tévéképernyõn akarnád nézni az összes elérhetõ csatornát egyszerre.)
Használj playertextdrawokat (CreatePlayerTextDraw) melyeket játékosonként más és más tartalommal megtudsz jeleníteni.
Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 04. - 23:20:27
Esetleg tudsz valami megoldást ajánlani?  :hmmm:
Cím: Üzemanyag
Írta: Zsolesszka - 2012. Augusztus 04. - 23:24:09
Idézetet írta: TwoClose date=1344115227\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25538\" data-ipsquote-contentclass=\"forums_Topic
Esetleg tudsz valami megoldást ajánlani?  :hmmm:
 
Igen, leírtam az elõzõ postban.
Vagy hozz létre annyi textdrawot amennyi a maximális játékosok száma.
 
new Text:benzin[MAX_PLAYERS];

 
És for ciklussal hozd is létre az összes textdrawot:
 
for(new i; i < MAX_PLAYERS; i++) benzin = TextDrawCreate(...
Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 04. - 23:37:05
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(7256) : warning 213: tag mismatch
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(7256) : error 035: argument type mismatch (argument 2)
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(9150) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15571) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15572) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15573) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15574) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15575) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15576) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15577) : error 017: undefined symbol \"playerid\"

 
Úgy érzem valamit elrontottam...  :confused:
7256.:
 
PlayerTextDrawSetString(Benzin[playerid],str);

 
9150.:
 
PlayerTextDrawSetString(Benzin[playerid],string); }

 
15571 - 15577.:
 
Benzin[playerid] = CreatePlayerTextDraw(39.000000, 423.000000, \"100 %\");
PlayerTextDrawBackgroundColor(Benzin[playerid], 255);
PlayerTextDrawFont(Benzin[playerid], 2);
PlayerTextDrawLetterSize(Benzin[playerid], 0.300000, 1.000000);
PlayerTextDrawColor(Benzin[playerid], -1);
PlayerTextDrawSetOutline(Benzin[playerid], 1);
PlayerTextDrawSetProportional(Benzin[playerid], 1);
Cím: Üzemanyag
Írta: tonyo - 2012. Augusztus 04. - 23:56:59
playerid helyett kellene valami más változónév. Be tudnál másolni kicsit nagyobb részt a konkrét sornál? :)
Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 05. - 00:01:01
new PlayerText:Benzin[MAX_PLAYERS];
if(gGas[playerid] == 1)
{
   new str[10];
   format(str,10,\"%d%\",Gas[vehicle]);
   PlayerTextDrawSetString(playerid, Benzin[playerid], str);
   PlayerTextDrawShow(playerid, Benzin[playerid]);
}
                PlayerTextDrawShow(playerid, Benzin[playerid]);
public OnPlayerExitVehicle(playerid, vehicleid)
{
    PlayerTextDrawHide(playerid, Benzin[playerid]);
public CheckGas()
{
new string[256];
for(new i=0;i<MAX_PLAYERS;i++)
{
       if(IsPlayerConnected(i))
          {
              if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
              {
             new vehicle = GetPlayerVehicleID(i);
           if(Gas[vehicle] >= 1)
         {
             if(Gas[vehicle] <= 10)
          {
               PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0);
               if(gGas == 0) {
                  GameTextForPlayer(i,\"~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Kevés~w~ az üzemanyag\",5000,3);
            }
          }
             if(gGas == 1) {
             if(IsAPlane(vehicle) || IsABoat(vehicle) || IsABike(vehicle) || IsAHarvest(vehicle) || IsADrugHarvest(vehicle) || IsASweeper(vehicle))
             {
               format(string, sizeof(string), \"N/A\");
         }
         else
         {
                        format(string, sizeof(string), \"%d%\",Gas[vehicle]);
         }
            PlayerTextDrawSetString(playerid, Benzin[playerid], string); }
         if(IsAPlane(vehicle) || IsABoat(vehicle) || IsABike(vehicle) || IsAHarvest(vehicle) || IsADrugHarvest(vehicle) || IsASweeper(vehicle) || engineOn[vehicle] == 0) { Gas[vehicle]++; }
                 Gas[vehicle]--;
         }
            else
              {
                 NoFuel = 1;
                 TogglePlayerControllable(i, 0);
           GameTextForPlayer(i,\"~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Kifogyott~w~ az üzemanyag~n~ a jármûbõl!\",1500,3);
      }
   }
       }
}
return 1;
}
Benzin[playerid] = CreatePlayerTextDraw(39.000000, 423.000000, \"100 %\");
PlayerTextDrawBackgroundColor(playerid, Benzin[playerid], 255);
PlayerTextDrawFont(playerid, Benzin[playerid], 2);
PlayerTextDrawLetterSize(playerid, Benzin[playerid], 0.300000, 1.000000);
PlayerTextDrawColor(playerid, Benzin[playerid], -1);
PlayerTextDrawSetOutline(playerid, Benzin[playerid], 1);
PlayerTextDrawSetProportional(playerid, Benzin[playerid], 1);
Cím: Üzemanyag
Írta: tonyo - 2012. Augusztus 05. - 00:12:30
PlayerTextdrawok esetén az 1. paraméter általában playerid, 2. paraméter pedig a td id, 3. paraméter a többi... Te gondolom sima TD-rõl álltál át player TD-re, és lemaradtak a playerid-k :)
Példa:
 
PlayerTextDrawSetString(Benzin[playerid],str);

 
Helyett:
 
PlayerTextDrawSetString(playerid, Benzin[playerid],str);

 
Ez alapján már szerintem tudod mi a gond, és meg tudod csinálni a többit is :)
Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 05. - 00:13:52
Igen, ezeket meg is csináltam, de újból error-t kaptam
Cím: Üzemanyag
Írta: tonyo - 2012. Augusztus 05. - 00:15:08
Ja látom közben átírtad. És most milyen errorokat ad?
15571 - 15577-es soroknál tudnál még kicsit több dolgot megadni a környékrõl? Ott a playerid-vel lesz a gond, helyette vmi más lesz(talán \"i\"?)
Cím: Üzemanyag
Írta: BVZS - 2012. Augusztus 05. - 00:29:18
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15572) : error 017: undefined symbol \"i\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15573) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15574) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15575) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15576) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15577) : error 017: undefined symbol \"playerid\"
C:\\Documents and Settings\\1NSANE\\Asztal\\EndlessRPA.pwn(15578) : error 017: undefined symbol \"playerid\"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
7 Errors.

 
Ez az OnGameModeInit alatt van.
 

Benzin = CreatePlayerTextDraw(39.000000, 423.000000, \"100 %\");
PlayerTextDrawBackgroundColor(playerid, Benzin, 255);
PlayerTextDrawFont(playerid, Benzin, 2);
PlayerTextDrawLetterSize(playerid, Benzin, 0.300000, 1.000000);
PlayerTextDrawColor(playerid, Benzin, -1);
PlayerTextDrawSetOutline(playerid, Benzin, 1);
PlayerTextDrawSetProportional(playerid, Benzin, 1);