VS event

Započeo _.Xavi._, Mart 19, 2023, 20:53:43 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Pitanje/savjet: pravim VS event, znaci admin stavi dva igraca na poziciji 1 i 2, (/vs1, /vs2) i treba da se kuca /vsstart da krene count od 10 sekundi kao td ono na sredini, i kad istekne 10 sekundi sami se unfrezaju, nisam radio sa tdom count al svakako mi ne radi da se unfrezaju nakon 10 sekundi, takodje ako nisu stavljena 2 igraca i nije jos kucano vsstart ne moze se pokrenut, ili stavit drugi (problem je sto se igraci na unfrezaju i stavlja tog ko kuca /vs1 na poziciju a ne id koji je unet) [pawn]new vs1_playerid = INVALID_PLAYER_ID, vs2_playerid = INVALID_PLAYER_ID;
new vs_started = false;
const vs_countdown_seconds = 10;
new vs_countdown = 0;

CMD:vs1( playerid, params[] )
{
   if( PlayerInfo[ playerid ][ xAdmin ] < 1 && PlayerInfo[ playerid ][ xGameSage ] < 1 ) return SendErrorMessage( playerid, "Niste u mogucnosti koristiti ovu komandu." );
    if (vs_started)
    {
      SendErrorMessage( playerid, "VS je u toku!" );
        return 1;
    }
        new id;
       if( sscanf( params, "u", id ) ) {
        SendUsageMessage( playerid, "/vs1 [ ID/Deo imena ]");
        return 1;
    }
       if( id == IPI ) return SendErrorMessage( playerid, "Taj igrac nije na serveru." );

    SetPlayerPos(id, -243.9080,2602.4841,62.7031);
    GivePlayerWeapon(id, 24, 100);
    TogglePlayerControllable(id, 0);
    vs1_playerid = id;
    SendClientMessage(id, -1, "Admin vas je postavio na poziciju 1 na VS Turniru!");
    return 1;
}

CMD:vs2( playerid, params[] )
{
    if( PlayerInfo[ playerid ][ xAdmin ] < 1 && PlayerInfo[ playerid ][ xGameSage ] < 1 ) return SendErrorMessage( playerid, "Niste u mogucnosti koristiti ovu komandu." );
    {
        SendErrorMessage( playerid, "VS je u toku!" );
        return 1;
    }
    new id;
    if( sscanf( params, "u", id ) ) {
        SendUsageMessage( playerid, "/vs2 [ ID/Deo imena ]");
        return 1;
    }
    if( id == IPI ) return SendErrorMessage( playerid, "Taj igrac nije na serveru." );

    SetPlayerPos(id, -198.2138,2601.9973,62.7031);
    GivePlayerWeapon(id, 24, 100);
    TogglePlayerControllable(id, 0);
    vs2_playerid = id;
    SendClientMessage(id, -1, "Admin vas je postavio na poziciju 2 na VS Turniru!");
    return 1;
}

public OnPlayerTimer(playerid, const timerid[], params[])
{
    if (!strcmp("vs_countdown_timer", timerid))
    {
        vs_countdown--;
        if (vs_countdown > 3)
        {
            return 1;
        }
        else if (vs_countdown > 0)
        {
        SendClientMessageToAll(-1, "VS pocinje za %d!", vs_countdown);
        return 1;
        }

        SendClientMessageToAll(-1, "GO!");
        TogglePlayerControllable(vs1_playerid, true);
        TogglePlayerControllable(vs2_playerid, true);

        vs_countdown = vs_countdown_seconds;
        vs_started = false;

        return 0;
    }

    return 1;
}

CMD:vsstart(playerid, params[])
{
    if (PlayerInfo[playerid][xAdmin] < 1 && PlayerInfo[playerid][xGameSage] < 1) return SendErrorMessage(playerid, "Niste u mogucnosti koristiti ovu komandu.");

    if (vs_started)
    {
         SendErrorMessage(playerid, "VS je u toku!");
         return 1;
    }

    if (vs1_playerid == INVALID_PLAYER_ID || vs2_playerid == INVALID_PLAYER_ID)
    {
        SendErrorMessage(playerid, "Niste stavili 2 igraca!");
        return 1;
    }

    vs_started = true;
    SendClientMessageToAll(-1, "VS je pokrenut! Spremite se za borbu za %d sekundi!", vs_countdown_seconds);
    TogglePlayerControllable(vs1_playerid, false);
    TogglePlayerControllable(vs2_playerid, false);
    SetTimerEx("vs_countdown_timer", 1000, true, "i", playerid);

    return 1;
}[/pawn]
Opširnije: /
Dodatno: /
Poslednja Izmena: Mart 19, 2023, 20:55:13 POSLE PODNE od _.Xavi._

nije mi jasan nacin na koji handlujes timer..  koristi forward i public

Citat: njoBe_ poslato Mart 19, 2023, 20:57:47 POSLE PODNE
nije mi jasan nacin na koji handlujes timer..  koristi forward i public

nisam ja pisao ovo za vsstart, i timer, to sam preko chatgpt jer nisam znao kako to da "povezem" vsstart sa vs1 vs2, tj da unfreza ta dva igraca kad istekne count

[pawn]
SetTimerEx("vs_countdown_timer", 1000, true, "ii", vs1_playerid, vs2_playerid);
[/pawn]

[pawn]
forward vs_countdown_timer(player1, player2);
public vs_countdown_timer(player1, player2)
{
    vs_countdown--;
    if (vs_countdown > 3)
    {
        return 1;
    }
    else if (vs_countdown > 0)
    {
        SendClientMessageToAll(-1, "VS pocinje za %d!", vs_countdown);
        return 1;
    }
    SendClientMessageToAll(-1, "GO!");
    TogglePlayerControllable(player1, true);
    TogglePlayerControllable(player2, true);
    vs_countdown = vs_countdown_seconds;
    vs_started = false;
    return 0;
   
}
[/pawn]
Poslednja Izmena: Mart 19, 2023, 21:11:39 POSLE PODNE od njoBe_


Taj ChatGPT i AI generalno ce nas doci glave. Ljudi generalno ima da umisle kako mogu sve i svasta a nemaju pojma o zivotu.

Prva greska je kako razmisljas. Prvo postavljas poziciju jednog igraca, pa drugog, pa onda startujes. Umesto da razmisljas kao programer i da kazes, treba mi komanda
/duel [PlayerID 1][PlayerID 2]  i da kad nju pozoves da forsira ta dva igraca na duel, ili da im ponudi da prihvate/odbiju. Poenta je da tvoja definicija samog problema koji treba da resis je pogresna.


public OnPlayerTimer(playerid, const timerid[], params[])
Ja ne znam odakle ovo i sta bi trebalo da predstasvlja, pogotovo sto je timerid stavljan kao niz (verovatno string), tako da prvo treba tu da se zapitas sta i kako.
Dalje necu ni da idem posto bi znacilo da odradim sve umesto tebe a to nije pomoc.

Ako radiš preko chatgpt obriši account na ovom forumu

Citat: MirsoN poslato Mart 19, 2023, 21:48:53 POSLE PODNE
Ako radiš preko chatgpt obriši account na ovom forumu

al ste zapeli s tim chatgptom, ne radim preko njega nego sam pokusao i sam da uradim ovo al nije islo, pre sam stavljao isto temu neku za to i nisam se snasao i ostalo mi je sa time da probam, slazem se da to nije bas kao sto svi pricaju, al eto to mi je bila neka od opcija pa sam probao, od misa pravite slona..
Poslednja Izmena: Mart 19, 2023, 21:57:47 POSLE PODNE od _.Xavi._

Citat: njoBe_ poslato Mart 19, 2023, 21:09:14 POSLE PODNE
[pawn]
SetTimerEx("vs_countdown_timer", 1000, true, "ii", vs1_playerid, vs2_playerid);
[/pawn]

[pawn]
forward vs_countdown_timer(player1, player2);
public vs_countdown_timer(player1, player2)
{
    vs_countdown--;
    if (vs_countdown > 3)
    {
        return 1;
    }
    else if (vs_countdown > 0)
    {
        SendClientMessageToAll(-1, "VS pocinje za %d!", vs_countdown);
        return 1;
    }
    SendClientMessageToAll(-1, "GO!");
    TogglePlayerControllable(player1, true);
    TogglePlayerControllable(player2, true);
    vs_countdown = vs_countdown_seconds;
    vs_started = false;
    return 0;
   
}
[/pawn]

radi, hvala drug ;)