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: mauladam - 2012. január 02. - 17:49:40

Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: mauladam - 2012. január 02. - 17:49:40
Sziasztok!
Nem tudom mi lehet a gond vele.
A /ujhaz parancsom beír egy sora a hazak táblámba, ez hibátlan.
Utána a /enter parancs végigmegy a sorokon, és ha a player közel van valamelyikhez (IsPlayerRangeOfPoint) akkor vw, interior, és pos váltás.
De valamiért nem változtatja meg.
Most használatam elõszõr mysql_fetch_row_format függvényt, szerintem azzal lehet a gond.
Így próbálkoztam:
 
CMD:enter(playerid, params[])
{
format(query, 256, \"SELECT virtualworld FROM \"HAZTABLA\" WHERE virtualworld = MAX(\'virtualworld\')\");
mysql_store_result(); new lastid = mysql_fetch_int(); mysql_free_result();
new Float:posx, Float:posy, Float:posz, Float:interiorx, Float:interiory, Float:interiorz, interiorid, virtualworld;
        mysql_real_escape_string(PlayerName(playerid),nev);
for(new i = 0; i < lastid; i++){
format(query, 256, \"SELECT x,y,z FROM \"HAZTABLA\" WHERE virtualworld = \'%i\'\",i);
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(sor);
if(!sscanf(sor, \"fff\", posx,posy,posz)){
    if(IsPlayerInRangeOfPoint(playerid, 2.0, posx,posy,posz)){
      hazid[playerid] = i;
      hazban[playerid] = true;
      format(query, 256, \"SELECT interiorx,interiory,interiorz,interiorid,virtualworld FROM \"HAZTABLA\" WHERE                 virtualworld = \'%i\'\", hazid[playerid]);
                                mysql_query(query);
                                mysql_store_result();
                                mysql_fetch_row(sor);
      if(!sscanf(sor, \"fffii\", interiorx,interiory,interiorz,interiorid,virtualworld)){
                 SetPlayerPos(playerid, interiorx,interiory,interiorz);
                 SetPlayerInterior(playerid, interiorid);
            SetPlayerVirtualWorld(playerid, virtualworld);
          break;
      }
   }
}
}
return 1;
}
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Zsolesszka - 2012. január 02. - 19:19:45


Ennyire egy össze ***** kódot.
 
Ha bemásolod a mysql adat tábla szerkezetét ( \"HAZTABLA\" ) írok neked egy változatot errõl a parancsról, ha gondolod.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: mauladam - 2012. január 02. - 19:38:56
Azt megköszönném :)
Szerkezet export:
 
CREATE TABLE IF NOT EXISTS `hazak` (
`virtualworld` int(12) NOT NULL AUTO_INCREMENT,
`tulaj` varchar(24) NOT NULL,
`statusz` int(12) NOT NULL,
`eladasiar` int(12) NOT NULL,
`berletidij` int(12) NOT NULL,
`x` varchar(15) NOT NULL,
`y` varchar(15) NOT NULL,
`z` varchar(15) NOT NULL,
`interiorid` int(12) NOT NULL,
`interiorx` varchar(15) NOT NULL,
`interiory` varchar(15) NOT NULL,
`interiorz` varchar(15) NOT NULL,
PRIMARY KEY (`virtualworld`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Zsolesszka - 2012. január 02. - 19:57:43
A virtualworld részét nem értem ha van 1500 ház elmentve akkor a virtualworld értékének ~1500-nak kell lenni?  (SetPlayerVirtualWorld)
Mert jelen esetben így van megírva.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: mauladam - 2012. január 02. - 20:04:58
Azért csináltam így, mert nem tudtam hogy oldjam meg.
Az a cél hogy ne találkozhassanak egymással a házukban, ha ugyan az az interior van benne.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Zsolesszka - 2012. január 02. - 20:14:22
Ok.
Írtam egy változatot nem teszteltem:
[pawn]CMD:enter(playerid)
{
new
   bool:kozelben = true,
   query[256],
   Float:h_xyz[3],
   Float:i_xyz[3],
   interiorid,
   virtualworld;
    mysql_query(\"SELECT `virtualworld`,`x`,`y`,`z`,`interiorid`,`interiorx`,`interiory`,`interiorz` FROM `hazak`\"); // \"HAZTABLA\"
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
        while(mysql_fetch_row(query))
        {
      sscanf(query, \"p<|>dfffdfff\", virtualworld, h_xyz[0], h_xyz[1], h_xyz[2], interiorid, i_xyz[0], i_xyz[1], i_xyz[2]);
//         printf(\"%d,%f,%f,%f,%d,%f,%f,%f\", virtualworld, h_xyz[0], h_xyz[1], h_xyz[2], interiorid, i_xyz[0], i_xyz[1], i_xyz[2]);
      if(IsPlayerInRangeOfPoint(playerid, 2.0, h_xyz[0], h_xyz[1], h_xyz[2]))
      {
         kozelben = false;
         hazid[playerid] = virtualworld;
         hazban[playerid] = true;
         SetPlayerPos(playerid, i_xyz[0], i_xyz[1], i_xyz[2]);
         SetPlayerInterior(playerid, interiorid);
         SetPlayerVirtualWorld(playerid, virtualworld);
         break;
      }
   }
} else print(\"Az adat tábla nem tartalmaz adat sorokat.\");
mysql_free_result();
if(kozelben) SendClientMessage(playerid, -1, \"Egy ház közelében se tartózkodsz.\");
return 1;
}[/pawn]
Edit: vesszõ hiba javítva.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: mauladam - 2012. január 02. - 20:17:42
Tesztelem, köszönöm.
E.: Nem mûködik :S Nem találja valamiért a sorokat, pedig beíródnak.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Zsolesszka - 2012. január 03. - 00:31:07
Idézetet írta: mauladam date=1325531862\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"15159\" data-ipsquote-contentclass=\"forums_Topic
Tesztelem, köszönöm.
E.: Nem mûködik :S Nem találja valamiért a sorokat, pedig beíródnak.
 
Phpmyadminon látod az adatokat benne?
Akkor ebben a sorban lehet valami hiba:
 

    mysql_query(\"SELECT `virtualworld`,`x`,`y`,`z`,`interiorid``interiorx`,`interiory`,`interiorz` FROM `hazak`\"); // \"HAZTABLA\"[/quote]
elõfordulhat  hogy az elérési utat nem jól adtam meg ezt neked kellene tudni javítani már.
Ilyenkor szoktam megcsinálni az adat táblát és letesztelni. De majd holnap estére, ha nem felejtem el.
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: mauladam - 2012. január 03. - 04:57:27
Igen, benne van a táblában.
Oké, köszi.
Megpróbálom javítani addig.
Sikerült!
Hiányzott egy vesszõ. Végre sikerült. Köszönöm a segítséget! :) :)
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Sheet - 2012. január 03. - 06:42:11
[mod]Máskor zárd a témát! Zárok[/mod]
Cím: /enter - Nem állítja át a pozíciót,virtualworld-t,interiorid-t.
Írta: Zsolesszka - 2012. január 03. - 18:22:51
Idézetet írta: mauladam date=1325563047\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"15159\" data-ipsquote-contentclass=\"forums_Topic
Igen, benne van a táblában.
Oké, köszi.
Megpróbálom javítani addig.
Sikerült!
Hiányzott egy vesszõ. Végre sikerült. Köszönöm a segítséget! :) :)
 
Ahogy leírtad hiányzik egy vesszõ észre is vettem rögtön.
Nm.