/tpveh komanda

Započeo Risticc, Mart 02, 2024, 17:36:42 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

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]

sscanf vraca 0 ako je uspjesno provukao scan format

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

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;
}

Nece i dalje vrti return iz scanfa

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

Ali meni ne treba iz baze, meni treba od igraca vozilo da teleportujem do njega?

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]

Pa zar ne dodje bukvalno na isto na kraju?

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?

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
Poslednja Izmena: Mart 03, 2024, 01:01:55 PRE PODNE od Risticc

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.


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?

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

I dalje vraca sscanf return?