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: BackUP - 2015. február 08. - 12:38:13

Cím: strfind visszatérése miért -1?
Írta: BackUP - 2015. február 08. - 12:38:13
Sziasztok!
Jármű rendszeremnél szeretném leellenőrizni, hogy a játékos zsebében van e kulcs a járműhöz. Az ellenőrzést rendszám alapján végzem, a játékos zsebe pedig egy nagy string változó.
A jelenség:
A mellékelt képen is látszik(kiirattam a móddal), hogy a zseb változójában benne van a Rendszám, de az strfind ezt nem találja meg. A visszatérése mindig -1 lesz.
FILTERSCRIPTben használom.
Kód:
 
public OnPlayerKeyStateChange( playerid, newkeys, oldkeys ){
if(newkeys & KEY_YES){
    if(IsPlayerInAnyVehicle(playerid)) {
        new vehid = GetPlayerVehicleID(playerid);
        new str[1048];
        GetPVarString(playerid, \"InvItemsZseb\", str, 1048); // a zsebét pvarban tárolom, ezt itt lekérem.
        format(str, 1048, \"%s\", str); // ez csak egy próba volt, de nem jött be.
        msg(playerid, pred, str); // kiiratom a szebét
        msg(playerid, pred, vInfo[vehid][Rendszam]); // kiiratom a rendszámot
       if( strfind(vInfo[vehid][Rendszam], str) != -1) { // megnézem a zsebébe bent van e
        new engine, lights, alarm, doors, bonnet, boot, objective;
        GetVehicleParamsEx(vehid, engine, lights, alarm, doors, bonnet, boot, objective); //psszt. most vettem észre, ez felesleges és nem is ide tartozik.
        if(vInfo[vehid][Engine] == 0)
        {
            SetVehicleParamsEx(vehid, 1, lights, alarm, doors, bonnet, boot, objective);
            cmd_me(playerid, \"elindítja a jármű motorját.\");
         vInfo[vehid][Engine] = 1;
      } else {
          SetVehicleParamsEx(vehid, 0, lights, alarm, doors, bonnet, boot, objective);
          cmd_me(playerid, \"leállítja a jármű motorját.\");
         vInfo[vehid][Engine] = 0;
      }
   } else {
      msg(playerid, pred, \"(( Nincs hozzá kulcsod. ))\"); // ezt írja ki
   }
   new str2[20];
   format(str2, 20, \"%d\",strfind(vInfo[vehid][Rendszam], str, true)); // -1 el tér vissza hiába van bent a kulcs. (ha nincs bent, akkor is.)
   msg(playerid, pred, str2);
}
}
return 1;
}

 
Kép:
[hs width=300 height=300]http://kepfeltoltes.hu/150208/289586673sa-mp-007_www.kepfeltoltes.hu_.png[/hs]
Elnézést, de a paint volt a leggyorsabb megoldás :) Köszönöm előre annak, aki segít.


BackUP
Cím: strfind visszatérése miért -1?
Írta: .random. - 2015. február 08. - 12:53:00
Így ?
 

if(strfind(vInfo[vehid][Rendszam], str) == -1) return msg(playerid, pred, \"(( Nincs hozzá kulcsod. ))\");
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehid, engine, lights, alarm, doors, bonnet, boot, objective); //psszt. most vettem észre, ez felesleges és nem is ide tartozik.
if(vInfo[vehid][Engine] == 0)
{
SetVehicleParamsEx(vehid, 1, lights, alarm, doors, bonnet, boot, objective);
cmd_me(playerid, \"elindítja a jármű motorját.\");
vInfo[vehid][Engine] = 1;
}
else
{
SetVehicleParamsEx(vehid, 0, lights, alarm, doors, bonnet, boot, objective);
cmd_me(playerid, \"leállítja a jármű motorját.\");
vInfo[vehid][Engine] = 0;
}
new str2[20];
format(str2, 20, \"%d\",strfind(vInfo[vehid][Rendszam], str, true)); // -1 el tér vissza hiába van bent a kulcs. (ha nincs bent, akkor is.)
msg(playerid, pred, str2);
}
}
return 1;
}
Cím: strfind visszatérése miért -1?
Írta: BackUP - 2015. február 08. - 12:55:51
Nem változott semmi.
Cím: strfind visszatérése miért -1?
Írta: rayle - 2015. február 08. - 13:38:13
if( strfind(vInfo[vehid][Rendszam], str) != -1) { // megnézem a zsebébe bent van e

 
Helyett:
 
if( strfind(str, vInfo[vehid][Rendszam]) != -1) { // megnézem a zsebébe bent van e

 
Elvileg így működnie kéne, azért az str -t kell előre írni mert abban keressük a szöveget, ez esetben a rendszámot.
Cím: strfind visszatérése miért -1?
Írta: BackUP - 2015. február 08. - 13:43:08
Így sem jó. Viszont akkor a sampfórumon a wiki hibás? Ott az van írva, hogy az elsőt keressük a másodikban.
De így sem oldódott meg sajnos.
Cím: strfind visszatérése miért -1?
Írta: rayle - 2015. február 08. - 13:47:57
http://wiki.sa-mp.com/wiki/Strfind
Az elsőben keressük a másodikat, rosszul van írva a wikin.
Cím: strfind visszatérése miért -1?
Írta: BackUP - 2015. február 08. - 13:49:54
Rendben, köszönöm, de így is -1 a visszatérése.
Cím: strfind visszatérése miért -1?
Írta: BackUP - 2015. február 10. - 17:15:37
Megoldva!
Pontosanmi volt a gond, azt nem tudom, tlejesen más módszerrel újraírtamígy tökéletes. Köszönöm annak aki próbált segíteni. :)