Szerző Téma: strfind visszatérése miért -1?  (Megtekintve 1165 alkalommal)

Nem elérhető BackUP

  • 908
    • Profil megtekintése
strfind visszatérése miért -1?
« Dátum: 2015. február 08. - 12:38:13 »
0 Show voters
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
« Utoljára szerkesztve: 2015. február 08. - 15:39:00 írta RusH. »

strfind visszatérése miért -1?
« Válasz #1 Dátum: 2015. február 08. - 12:53:00 »
+1 Show voters
Í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;
}

Nem elérhető BackUP

  • 908
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #2 Dátum: 2015. február 08. - 12:55:51 »
0 Show voters
Nem változott semmi.

Nem elérhető rayle

  • 174
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #3 Dátum: 2015. február 08. - 13:38:13 »
0 Show voters
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.

Nem elérhető BackUP

  • 908
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #4 Dátum: 2015. február 08. - 13:43:08 »
0 Show voters
Í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.

Nem elérhető rayle

  • 174
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #5 Dátum: 2015. február 08. - 13:47:57 »
+1 Show voters
http://wiki.sa-mp.com/wiki/Strfind
Az elsőben keressük a másodikat, rosszul van írva a wikin.

Nem elérhető BackUP

  • 908
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #6 Dátum: 2015. február 08. - 13:49:54 »
0 Show voters
Rendben, köszönöm, de így is -1 a visszatérése.

Nem elérhető BackUP

  • 908
    • Profil megtekintése
strfind visszatérése miért -1?
« Válasz #7 Dátum: 2015. február 10. - 17:15:37 »
0 Show voters
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. :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal