Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Risticc poslato Mart 02, 2024, 17:36:42 POSLE PODNE

Naslov: /tpveh komanda
Poruka od: Risticc poslato Mart 02, 2024, 17:36:42 POSLE PODNE
Imam problem sa komandom, svaki put mi ispisuje return od sscanf-a... ?

[pawn]CMD:tpveh(playerid, params[]) {
    if( PlayerInfo[ playerid ][ xAdmin ] >= 1 || PlayerInfo[ playerid ][ xHelper ] >= 1 ) {
        new id;
      if(!sscanf(params, "u", id)) {
         return SendUsageMessage(playerid, "/tpveh [ID/Deo imena]");
      }
        if(!IsPlayerConnected(id)) {
            return SendErrorMessage(playerid, "Igrac sa ID %d je offline!", id);
        }
        new vehicleid = GetPlayerVehicleID(id);
      
        new Float:x, Float:y, Float:z;
        GetVehiclePos(vehicleid, x, y, z);
        printf("Uzeo kordinate vozila");

        new Float:x1, Float:y1, Float:z1;
        GetPlayerPos(id, x1, y1, z1);
        printf("Uzeo kordinate igraca");

        KGEyes_SetVehiclePos(vehicleid, x1, y1, z1);
        printf("Teleportovao vozilo");
    } else {
        return SendErrorMessage(playerid, "Nemate ovlascenje da koristite ovu komandu.");
    }
    return true;
}[/pawn]
Naslov: Odg: /tpveh komanda
Poruka od: Bit Frosty poslato Mart 02, 2024, 17:46:39 POSLE PODNE
sscanf vraca 0 ako je uspjesno provukao scan format
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 02, 2024, 17:58:07 POSLE PODNE
Okej, ali sada nece da teleportuje vozilo,

        [pawn]new vehicleid = GetPlayerVehicleID( playerid );
        new Float:x, Float:y, Float:z;
        GetVehiclePos(vehicleid, x, y, z);
        printf("Uzeo kordinate vozila %d %d %d %d", vehicleid, x, y, z);[/pawn]

Konzola je ispisala : Uzeo kordinate vozila 0 0 0 0
Naslov: Odg: /tpveh komanda
Poruka od: Howard22 poslato Mart 02, 2024, 19:48:52 POSLE PODNE
CMD:getcar(playerid, params[])
{
    if( PlayerInfo[ playerid ][ xAdmin ] >= 1 || PlayerInfo[ playerid ][ xHelper ] >= 1 )
   {
       new id, Float:X, Float:Y, Float:Z;
       if(sscanf(params, "i", id)) return SCM(playerid, "/getcar [ID]");
      GetPlayerPos(playerid, X, Y, Z);
      SetVehiclePos(id, X, Y+4, Z);
   }
   return 1;
}
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 02, 2024, 20:13:05 POSLE PODNE
Nece i dalje vrti return iz scanfa
Naslov: Odg: /tpveh komanda
Poruka od: toncikica poslato Mart 02, 2024, 20:53:42 POSLE PODNE
Citat: Risticc poslato Mart 02, 2024, 17:36:42 POSLE PODNE
Imam problem sa komandom, svaki put mi ispisuje return od sscanf-a... ?

[pawn]CMD:tpveh(playerid, params[]) {
    if( PlayerInfo[ playerid ][ xAdmin ] >= 1 || PlayerInfo[ playerid ][ xHelper ] >= 1 ) {
        new id;
      if(!sscanf(params, "u", id)) {
         return SendUsageMessage(playerid, "/tpveh [ID/Deo imena]");
      }
        if(!IsPlayerConnected(id)) {
            return SendErrorMessage(playerid, "Igrac sa ID %d je offline!", id);
        }
        new vehicleid = GetPlayerVehicleID(id);
      
        new Float:x, Float:y, Float:z;
        GetVehiclePos(vehicleid, x, y, z);
        printf("Uzeo kordinate vozila");

        new Float:x1, Float:y1, Float:z1;
        GetPlayerPos(id, x1, y1, z1);
        printf("Uzeo kordinate igraca");

        KGEyes_SetVehiclePos(vehicleid, x1, y1, z1);
        printf("Teleportovao vozilo");
    } else {
        return SendErrorMessage(playerid, "Nemate ovlascenje da koristite ovu komandu.");
    }
    return true;
}[/pawn]


[pawn]CMD:getcar( playerid, params[])
{
   if( PlayerInfo[ playerid ][ Admin ] >= 1 )
   {
      new vid, vfile[ 48 ], Float: X, Float: Y, Float: Z;
      if( sscanf( params, "d", vid )) return KORISCENJE( playerid, "/getcar [Vozilo ID]");
      format( vfile, sizeof( vfile ), VEH_FILE, vid );
      if( fexist( vfile ))
      {
         GetPlayerPos( playerid, X, Y , Z );
         SetVehiclePos( vid, X + 1.5, Y + 1.5, Z + 1.5 );
         SCMF( playerid, COLOR_YELLOW, "Uspjesno ste se teleport-ovali Vozilo ID: %d do sebe !", vid );
      }
      else GRESKA( playerid, "Taj ID Vozila ne postoji !");
   }
   else GRESKA( playerid, "Niste ovlasteni !");
   return 1;
}[/pawn]
Evo ti moja cmd, pa prilagodi
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 02, 2024, 21:00:53 POSLE PODNE
Ali meni ne treba iz baze, meni treba od igraca vozilo da teleportujem do njega?
Naslov: Odg: /tpveh komanda
Poruka od: Goku ^ poslato Mart 02, 2024, 21:23:42 POSLE PODNE
Prilagodi sebi takodje portace i igraca koji je u vozilu
[pawn]
CMD:tpveh(playerid, params[])
{
   new igrac, Float:fPos[3], AutoVeh = PlayerInfo[igrac][pPosedovanjeAuta], AutoVeh2 = PlayerInfo[igrac][pPosedovanjeAuta2], AvionVeh = PlayerInfo[igrac][pPosedovanjeAviona];
   new BrodVeh = PlayerInfo[igrac][pPosedovanjePlovila], MotorVeh = PlayerInfo[igrac][pPosedovanjeMotora], BicikloVeh = PlayerInfo[igrac][pPosedovanjeBicikla];
   if(UlogovanProvera[playerid] == 0)  return SCM(playerid, -1,"* Morate se ulogovati da bi koristili ovu komandu!");
   if(sscanf(params, "u", igrac)) return SCM(playerid, -1, ""BELA"/tpveh [ID/Ime_Prezime]");
   if(igrac == INVALID_PLAYER_ID) return SCM(playerid,-1, "Taj igrac nije online.");
   if(PlayerInfo[playerid][pAdmin] < 1) return SCM(playerid, -1,"Nemate ovlascenje za upotrebu ove komande.");
    if(AutoSpawn1[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(VoziloInfo[AutoVeh][vID], fPos[0], fPos[1]+4, fPos[2]); }
    if(AutoSpawn2[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(VoziloInfo[AutoVeh2][vID], fPos[0], fPos[1]+4, fPos[2]); }
    if(AvionSpawn[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(AvionInfo[AvionVeh][avID], fPos[0], fPos[1]+4, fPos[2]);}
    if(BrodSpawn[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(PlovilaInfo[BrodVeh][plID], fPos[0], fPos[1]+4, fPos[2]); }
    if(MotorSpawn[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(MotorInfo[MotorVeh][mID], fPos[0], fPos[1]+4, fPos[2]); }
    if(BiciklaSpawn[igrac] == 1) { GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(BiciklaInfo[BicikloVeh][biID], fPos[0], fPos[1]+4, fPos[2]); }
    va_SendClientMessage(igrac, -1, "%s %s je teleportovao vase vozilo do vas.", PlayerInfo[playerid][pImeRanka], GetName(playerid));
    va_SendClientMessage(playerid, -1, "Igracu %s [%d] ste teleportovali vozilo.", GetName(igrac), igrac);
   return 1;
}
[/pawn]
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 00:05:00 PRE PODNE
Pa zar ne dodje bukvalno na isto na kraju?
Naslov: Odg: /tpveh komanda
Poruka od: Goku ^ poslato Mart 03, 2024, 00:23:22 PRE PODNE
Citat: Risticc poslato Mart 03, 2024, 00:05:00 PRE PODNE
Pa zar ne dodje bukvalno na isto na kraju?
Kako na isto ti si trazio /tpveh id gde ce uzeti vozilo od tog igraca i portati ga do njega sto sam ti i poslao kao da je koristio komandu /vportvozilo?
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 01:00:25 PRE PODNE
Pa pogledaj moj kod gore pa vidi jel ne dodje na isto

Ti koristis takodje getplayerpos i definises ih kao i ja, i samo ih getas auto na tu lokaciju potpuno isto kao ja?
Meni tvoje funkcije koje ti koristis ne trebaju, kad ih skratim opet dodje na isto, ali opet nece resiti problem
Naslov: Odg: /tpveh komanda
Poruka od: Goku ^ poslato Mart 03, 2024, 01:37:28 PRE PODNE
Citat: Risticc poslato Mart 03, 2024, 01:00:25 PRE PODNE
Pa pogledaj moj kod gore pa vidi jel ne dodje na isto

Ti koristis takodje getplayerpos i definises ih kao i ja, i samo ih getas auto na tu lokaciju potpuno isto kao ja?
Meni tvoje funkcije koje ti koristis ne trebaju, kad ih skratim opet dodje na isto, ali opet nece resiti problem
Dobro i gde si definisao i kako si definisao da on izvuce id vozila???
Vidis dodao sam ti gore sto ti nemas AutoVeh = PlayerInfo[igrac][pPosedovanjeAuta];

AutoVeh = ID ili recimo Broj vozila koji igrac poseduje

gde kada ides zatim sto sam poslao

GetPlayerPos(igrac, fPos[0], fPos[1], fPos[2]); SetVehiclePos(VoziloInfo[AutoVeh][vID], fPos[0], fPos[1]+4, fPos[2]);

SetVehiclePos(VoziloInfo[PA AUTO VEH] i ovo ostalo portace vozilo koje igrac poseduje.

Ne znam kako ti na kraj dodje na isto?

GetVehicleid se koristi kada je igrac UNUTAR vozila a ne kada je van vozila.

Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 11:31:39 PRE PODNE
U skripti se koristi for petlja za definisanje tog vozila

[pawn]                       new slot = -1;
                     for( new j = 0; j < MAX_VEH_SLOT; j ++ ) {
                        if( player_veh[ playerid ][ vehicle_id ][ j ] != -1 && player_veh[ playerid ][ vehicle_id ][ j ] == vehicleid  ) {
                           slot = j;
                           break;
                        }
                     }[/pawn]

Kako bi sad ovo integrisao u komandu, da ubacim svoju funkciju za tp auta u for petlju ili?
Naslov: Odg: /tpveh komanda
Poruka od: Bit Frosty poslato Mart 03, 2024, 12:14:16 POSLE PODNE
Vi stvarno niste za zivot...Koliko god da vam covek objasni, koliko god puta da vam kaze naucite principe, koliko god vam puta pomogne vi cete opet ista pitanja, opet sve naopako po svome, i opet sa istim izgovorima i sranjima.

Dao si kod, rekao da ti vraca error od sscanf kad prosledis id, ja sam ti odgovorio, sscanf vraca 0 ako je uspjesno, da znas osnovne stvari znao bi da trebas maknuti negaciju u if naredbi tako da fail samo ako nije 0 (a ne ako je 0 kao sto je trenutno).
Citava poenta price je bila da maknes ! ali vama ocigledno covek ne moze ljudski napisati nego mora nacrtati, ali i za to izgleda da niste sposobni posto ne umijete procitati do kraja nego proletite samo.

Evo, fix sam tvoju komandu, treba da radi, ali opet sad sam ti pomogao ti nisi nista naucio i neces nauciti posto neces otvoriti google i traziti osnove programiranja nego ces nastaviti krpiti sa copy/paste i opet pitati ista glupa pitanja ovde.

[pawn]
CMD:tpveh(adminid, params[])
{
    if( PlayerInfo[ adminid ][ xAdmin ] < 1 && PlayerInfo[ adminid ][ xHelper ] < 1 )
        return SendErrorMessage(adminid, "Nemate ovlascenje da koristite ovu komandu.");

    new targetid;
    if(!sscanf(params, "u", targetid))
       return SendUsageMessage(adminid, "/tpveh [ID/Deo imena]");

    if(!IsPlayerConnected(targetid))
        return SendErrorMessage(targetid, "Nije validan ID/Ime");
   
    new Float:x, Float:y, Float:z;
    GetPlayerPos(adminid, x, y, z);   
    new interior =  GetPlayerInterior(adminid);
    new virtualworld =  GetPlayerVirtualWorld(adminid);

    new vehicleid = GetPlayerVehicleID(targetid);

    SetPlayerVirtualWorld(targetid, virtualworld);
    SetPlayerInterior(targetid, interior);

    if(IsValidVehicleID(vehicleid))
    {
        SetVehicleVirtualWorld(vehicleid, virtualworld);
        LinkVehicleToInterior(vehicleid, interior);
        SetVehiclePos(vehicleid, x, y, z);
        PutPlayerInVehicle(targetid, vehicleid, 0);
    }
    else
        SetPlayerPos(targetid, x, y, z);

    return true;
}
[/pawn]

PS: Za ove indiance sto salju random komande bog zna odakle, to necu ni da pocinjem... Ako te kick kad tp nekoga onda zamjeni funkcije odgovarajucima (posto ste nesposobni da napravite include koji ce se hook pa da mozete koristiti obicne funkcije...
SetVehiclePos postaje KGEyes_SetVehiclePos, i dalje ne znam sta imas u modu ali predpostavljam za sve zivo da imas taj KGEyes_ prefix
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 12:20:21 POSLE PODNE
I dalje vraca sscanf return?
Naslov: Odg: /tpveh komanda
Poruka od: rizla poslato Mart 03, 2024, 12:30:15 POSLE PODNE
 ::) ::) :-[

sscanf (https://github.com/Y-Less/sscanf?tab=readme-ov-file#scripting)(CITAJ!!!!!)


[pawn]
if(!sscanf(params, "u", targetid))
{
    //.....
}
else
{
    SendUsageMessage(adminid, "/tpveh [ID/Deo imena]");
    return 1;
}
[/pawn]
ili
[pawn]
if(sscanf(params, "u", targetid))
{
    SendUsageMessage(adminid, "/tpveh [ID/Deo imena]");
    return 1;
}
else
{
    //....
}
[/pawn]
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 12:40:48 POSLE PODNE
SScanf je resen, ali i dalje ne geta vozilo...
Naslov: Odg: /tpveh komanda
Poruka od: rizla poslato Mart 03, 2024, 13:05:10 POSLE PODNE
Sta tebi treba uopste? Da geta vozilo u kome je igrac, ili vozilo koje igrac poseduje?
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 13:06:08 POSLE PODNE
Da mu geta vozilo koje vec poseduje, recimo da mu je vozilo u las venturasu a on je u los santosu, pita admina e moze tpveh, on kuca i geta to njegovo vozilo do njega
Naslov: Odg: /tpveh komanda
Poruka od: rizla poslato Mart 03, 2024, 13:11:55 POSLE PODNE
Pa ako treba da geta vozilo koje poseduje, zasto proveravas id vozila sa GetPlayerVehicleID?

GetPlayerVehicleID (https://www.open.mp/docs/scripting/functions/GetPlayerVehicleID)


This function gets the ID of the vehicle the player is currently in. Note: NOT the model id of the vehicle. See GetVehicleModel for that.
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 13:17:35 POSLE PODNE
Kako bih onda mogao to da uradim, poslao sam kako se integrisu slotovi i vozila u for petlji na prethodnoj strani?
Naslov: Odg: /tpveh komanda
Poruka od: rizla poslato Mart 03, 2024, 13:25:45 POSLE PODNE
Goku ti je objasnio iznad posta gde si postavio for petlju, ja ti kod necu pisati, mogu samo da te navodim kako da razmisljas, jer se programiranje uci sa razumevanjem a ne copy-paste
Naslov: Odg: /tpveh komanda
Poruka od: Risticc poslato Mart 03, 2024, 17:49:29 POSLE PODNE
Jebiga ne znam da uradim, kad budem naucio tad cu se vratiti na ovo, hvala. lock.