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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Zippanto - 2016. Február 23. - 16:44:26

Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 23. - 16:44:26
Hali! Egy olyan kérdésem lenne, hogy hogyan lehet eltüntetni az adott playert virtualworld , interior állítás nélkül, láttam már szervereken. Illetve ez miért rossz? Valamiért nem történik semmi ha lenyomom
 

if(newkeys == KEY_UP)

 
A másik problémám viszont ezzel lenne.
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)

 
az objectid vlmiért teljesen más, beírtam a parancsnál h 978 és 1106-ot ad ki a fájlban.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 27. - 16:02:58
Szerintem már megoldódott, de...
1. Nem tudok tökéletes megoldásról, az egyik, hogy SetPlayerPos máshova, a kamerát pedig helyben tartod,
illetve esetleg interiorba linkelsz egy járművet és berakod a playert, akkor azt hiszem a player sem látszik a járművel együtt.
2. KEY_UP-ot nem kérdezi le az KeyState-es public, a GetPlayerKeys() függvény használata lehetséges, például
OnPlayerUpdate(playerid) publicban, vagy egy timerben. Azzal le tudod kérni a fel-le, jobbra-balra tengelyeket is.
3. Ebből az alap public sorból semmi nem derül ki.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 27. - 19:43:42
1. Azt majd megpróbálom, de szerintem menni fog. Amúgy fontos, hogy ott legyen a player, mert úgy tölt be az adott hely. (map,kocsik stb..)
2. Tökéletesen működik.
3.
 
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
if(response == EDIT_RESPONSE_FINAL)
{
    new string[56];
    getdate(ev,honap,nap);
gettime(ora,perc,masodperc);
format(string,sizeof(string),\"%d-%d-%d_%d:%d:%d\",ev,honap,nap,ora,perc,masodperc);
    new objid = UjObjectID();
    ObjectInfo[objid][ObjVan] = 1;
    ObjectInfo[objid][ObjModel] = objectid;
    ObjectInfo[objid][ObjPosX] = x;
    ObjectInfo[objid][ObjPosY] = y;
    ObjectInfo[objid][ObjPosZ] = z;
    ObjectInfo[objid][ObjRotRX] = rx;
    ObjectInfo[objid][ObjRotRY] = ry;
    ObjectInfo[objid][ObjRotRZ] = rz;
    ObjectInfo[objid][ObjDatum] = string;
    ObjectInfo[objid][ObjKeszitette] = pname(playerid);
        new file[32];
format(file,sizeof(file),\"/Objektek/%d.ini\",objid);
if(!fexist(file))
{
   dini_Create(file);
    dini_IntSet(file,\"ObjVan\",1);
        dini_IntSet(file,\"ObjModel\",objectid);
        dini_FloatSet(file,\"ObjPosX\",ObjectInfo[objid][ObjPosX]);
        dini_FloatSet(file,\"ObjPosY\",ObjectInfo[objid][ObjPosY]);
        dini_FloatSet(file,\"ObjPosZ\",ObjectInfo[objid][ObjPosZ]);
        dini_FloatSet(file,\"ObjRotRX\",ObjectInfo[objid][ObjRotRX]);
        dini_FloatSet(file,\"ObjRotRY\",ObjectInfo[objid][ObjRotRY]);
        dini_FloatSet(file,\"ObjRotRZ\",ObjectInfo[objid][ObjRotRZ]);
        dini_Set(file,\"ObjDatum\",ObjectInfo[objid][ObjDatum]);
        dini_Set(file,\"ObjKeszitette\",pname(playerid));
}
}
}
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 11:47:30
Amikor létrehozod az objectet, akkor jó object jelenik meg?
Ebben a scriptben ketten sem találtunk hibát(persze elnézhettük, de nem bonyolult a szerkezete).
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 13:02:54
Amikor lerakom akkor jó, de mikor resizem akkor már nem (a fájlba rossz id-t ment le)
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: zsoolt997 - 2016. Február 28. - 13:22:55
Gondolom Streamert használsz, már a callbackból ítélve. Ahhoz meg tartozik egy ilyen függvény
 
native EditDynamicObject(playerid, objectid);

 
és ne az alap objectekhez való EditObject()-et használd.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 13:54:04
Ebben az esetben nem futna le a callback és nem mentené le.
Illetve szerkeszteni se lehetne a nem létező alap objectet. :D
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: zsoolt997 - 2016. Február 28. - 16:07:54
Hát hidd el, hogy régebben olyat csináltam, hogy dinamikus pickupot raktam le, és a dolgokat, amiket akartam, hogy csináljon, azt a sima pickupos callback alá tettem, meghívódott, de mindig csak egyetlen egy. Úgyhogy el tudom képzelni, meg a címbe is azt írta be, úgyhogy.. :D
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 16:43:34
CMD:obj(playerid,params[])
{
    if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][Admin] >= 4)
{
    new parameter[64];
            if(sscanf(params, \"s[64]{}\",parameter)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [tipus] [id] ))\"), SCM(playerid,WHITE,\"(( Típusok: uj, torol ))\");
            {
                if(egyezik(parameter,\"uj\"))
                {
          new obj,Float:x,Float:y,Float:z;
          GetPlayerPos(playerid,x,y,z);
          if(sscanf(params,\"{s[64]}d\",obj)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [uj] [objektid] ))\");
         {
             new objid = CreateDynamicObject(obj,x,y+5,z+1,0,0,0);
            EditDynamicObject(playerid,objid);
         }
      }
      else if(egyezik(parameter,\"torol\"))
                {
          new delid;
          if(sscanf(params,\"{s[64]}d\",delid)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [torol] [id] ))\");
         {
             new file[32];
            format(file,sizeof(file),\"/Objektek/%d.ini\",delid);
             if(fexist(file))
             {
                dini_Remove(file);
                SFM(playerid,GREEN,\"(( Töröltél egy objektet! [%d] ))\",delid);
                return 1;
            }
            if(!fexist(file))
            {
                SCM(playerid,ORANGE,\"(( Nincs ilyen objekt! ))\");
                return 1;
            }
         }
      }
   }
}
}
return 1;
}
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 17:47:01
if(sscanf(params,\"{s[64]}d\",obj)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [uj] [objektid] ))\");
if(sscanf(params,\"{s[64]}d\",delid)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [torol] [id] ))\");

 
Lekérsz egy stringet és egy integert, de csak egy integer változót adsz meg neki.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 17:51:01
Mármint akkor mit írtam el?
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 17:55:36
Remélem jól veszem ki, de mivel már megvan a parameter string, szerintem nyugodtan törölheted
az {s[64]} részt a sscanf sorából.
 
if(sscanf(params,\"d\",obj)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [uj] [objektid] ))\");
if(sscanf(params,\"d\",delid)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [torol] [id] ))\");

 
Javíts ki ha tévedek, de szerintem itt már semmilyen stringet nem akarsz lekérni.
*szerk*
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 17:57:52
így nem megy.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 18:00:23
Mi a baj így? Csak mert szintaktikailag így helyes 1db integerrel.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 18:08:06
hiába írok be objekt id-t nem megy. kiadja a Használat: stb...
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 18:27:53
Próbáld meg így:
 
CMD:obj(playerid,params[])
{
    if(IsPlayerConnected(playerid))
    {
        if(PlayerInfo[playerid][Admin] >= 4)
        {
            new parameter[64],objektum;
            if(sscanf(params, \"s[64]d\",parameter,objektum)) return SCM(playerid,WHITE,\"(( Használat: /obj(ect) [tipus] [id] ))\"), SCM(playerid,WHITE,\"(( Típusok: uj, torol ))\");
            {
                if(egyezik(parameter,\"uj\"))
                {
                    new Float:x,Float:y,Float:z;
                    GetPlayerPos(playerid,x,y,z);
                    new objid = CreateDynamicObject(objektum,x,y+5,z+1,0,0,0);
                    EditDynamicObject(playerid,objid);
                }
                 else if(egyezik(parameter,\"torol\"))
                {
                    new file[32];
                    format(file,sizeof(file),\"/Objektek/%d.ini\",objektum);
                    if(fexist(file))
                    {
                        dini_Remove(file);
                        SFM(playerid,GREEN,\"(( Töröltél egy objektet! [%d] ))\",objektum);
                        return 1;
                    }
                    else
                    {
                        SCM(playerid,ORANGE,\"(( Nincs ilyen objekt! ))\");
                        return 1;
                    }
                }
            }
        }
    }
    return 1;
}
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 18:34:41
így megy, de még mindig rossz ID-t ment el.
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: rewan - 2016. Február 28. - 18:52:05
Publicot írd át erre(define is legyen benne):
 
#define GetDynamicObjectModel(%0) Streamer_GetIntData(STREAMER_TYPE_OBJECT, %0, E_STREAMER_MODEL_ID)
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
if(response == EDIT_RESPONSE_FINAL)
{
new string[56];
getdate(ev,honap,nap);
gettime(ora,perc,masodperc);
format(string,sizeof(string),\"%d-%d-%d_%d:%d:%d\",ev,honap,nap,ora,perc,masodperc);
new objid = UjObjectID();
ObjectInfo[objid][ObjVan] = 1;
ObjectInfo[objid][ObjModel] = GetDynamicObjectModel(objectid));
ObjectInfo[objid][ObjPosX] = x;
ObjectInfo[objid][ObjPosY] = y;
ObjectInfo[objid][ObjPosZ] = z;
ObjectInfo[objid][ObjRotRX] = rx;
ObjectInfo[objid][ObjRotRY] = ry;
ObjectInfo[objid][ObjRotRZ] = rz;
ObjectInfo[objid][ObjDatum] = string;
ObjectInfo[objid][ObjKeszitette] = pname(playerid);
new file[32];
format(file,sizeof(file),\"/Objektek/%d.ini\",objid);
if(!fexist(file))
   {
   dini_Create(file);
   dini_IntSet(file,\"ObjVan\",1);
   dini_IntSet(file,\"ObjModel\",GetDynamicObjectModel(objectid));
   dini_FloatSet(file,\"ObjPosX\",ObjectInfo[objid][ObjPosX]);
   dini_FloatSet(file,\"ObjPosY\",ObjectInfo[objid][ObjPosY]);
   dini_FloatSet(file,\"ObjPosZ\",ObjectInfo[objid][ObjPosZ]);
   dini_FloatSet(file,\"ObjRotRX\",ObjectInfo[objid][ObjRotRX]);
   dini_FloatSet(file,\"ObjRotRY\",ObjectInfo[objid][ObjRotRY]);
   dini_FloatSet(file,\"ObjRotRZ\",ObjectInfo[objid][ObjRotRZ]);
   dini_Set(file,\"ObjDatum\",ObjectInfo[objid][ObjDatum]);
   dini_Set(file,\"ObjKeszitette\",pname(playerid));
            }
}
return 1;
}

 
Formázásért bocsi, egyszerűen nem eszi most meg...
Cím: Player eltüntetése és samp keys kérdés és EditObject funkció probléma
Írta: Zippanto - 2016. Február 28. - 19:09:52
Sikerült!! Köszi szépen!!  :thumbsup: :thumbsup: 8)