Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Plen Ki Mun poslato Jul 05, 2018, 15:29:34 POSLE PODNE

Naslov: Nuklearna Boma sa Textdraw.
Poruka od: Plen Ki Mun poslato Jul 05, 2018, 15:29:34 POSLE PODNE
Problem(error/warning): Koristim sistem nuklearne bombe putem dialoga, ali ja hoću da to uradim putem textdrawa to jest da mijenjam izmeÄ'u baza sa lijevim/desnim textdraw i ispaljivanje bombe, ali ja pojma nemam kako da to napravim, to jest pojma nemam kako da uradim kada stisnem lijevi/desni da mi lista izmeÄ'u baza.

@Ino42O
@Bolex_
@Bašovski


Dio skripte:

Ovo su pozicije kamera za taj textdraw biranje.

1. 2730.4636,-2033.5076,52.0236,135.2458
2. 2431.8169,-1644.3945,56.7583,135.2458

Ovu su lijevi/desni i textdraw za bacit bombu to jest da izaberem tu bazu


new PlayerText:NukeLeftButton[MAX_PLAYERS];
new PlayerText:NukeRightButton[MAX_PLAYERS];
new PlayerText:SelectBase[MAX_PLAYERS];

NukeLeftButton[playerid] = CreatePlayerTextDraw(playerid, 236.000000, 291.812500, "ld_beat:left");
PlayerTextDrawLetterSize(playerid, NukeLeftButton[playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, NukeLeftButton[playerid], 26.500000, 17.937500);
PlayerTextDrawAlignment(playerid, NukeLeftButton[playerid], 1);
PlayerTextDrawColor(playerid, NukeLeftButton[playerid], -1523963137);
PlayerTextDrawSetShadow(playerid, NukeLeftButton[playerid], 0);
PlayerTextDrawSetOutline(playerid, NukeLeftButton[playerid], 0);
PlayerTextDrawFont(playerid, NukeLeftButton[playerid], 4);
PlayerTextDrawSetSelectable(playerid, NukeLeftButton[playerid], true);

NukeRightButton[playerid] = CreatePlayerTextDraw(playerid, 362.500000, 293.125000, "ld_beat:right");
PlayerTextDrawLetterSize(playerid, NukeRightButton[playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, NukeRightButton[playerid], 24.500000, 17.500000);
PlayerTextDrawAlignment(playerid, NukeRightButton[playerid], 1);
PlayerTextDrawColor(playerid, NukeRightButton[playerid], -1523963137);
PlayerTextDrawSetShadow(playerid, NukeRightButton[playerid], 0);
PlayerTextDrawSetOutline(playerid, NukeRightButton[playerid], 0);
PlayerTextDrawFont(playerid, NukeRightButton[playerid], 4);
PlayerTextDrawSetSelectable(playerid, NukeRightButton[playerid], true);

SelectBase[playerid] = CreatePlayerTextDraw(playerid, 297.000000, 295.312500, "IZABERI");
PlayerTextDrawLetterSize(playerid, SelectBase[playerid], 0.204999, 1.070625);
PlayerTextDrawAlignment(playerid, SelectBase[playerid], 1);
PlayerTextDrawColor(playerid, SelectBase[playerid], -1);
PlayerTextDrawSetShadow(playerid, SelectBase[playerid], 0);
PlayerTextDrawSetOutline(playerid, SelectBase[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, SelectBase[playerid], 51);
PlayerTextDrawFont(playerid, SelectBase[playerid], 2);
PlayerTextDrawSetProportional(playerid, SelectBase[playerid], 1);
PlayerTextDrawSetSelectable(playerid, SelectBase[playerid], true);



A ovo je kod nuklearne bombe sa dialogom.


case DIALOG_NUKE:
{
    if(! response) return cmd_nuke(playerid);
    if(response)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 3.0, 283.1531, 475.3052, 30.3334))
{
return SCM(playerid, COLOR_ORANGE_RED, "* Nisi na mjestu.");
}
new string[256];


        if(GetPlayerTeam(playerid) == listitem)
          {
                return SCM(playerid, COLOR_ORANGE_RED, "*Ne mozes bacit bombu na svoju bazu");
        }

    if(GetPlayerCash(playerid) < NUKE_COST)
{
    return SCM(playerid, COLOR_ORANGE_RED, "** Nemas dovoljno novaca.");
}

    GivePlayerCash(playerid, - NUKE_COST);

    gNuke[NUKE_BASE] = listitem;

        format(string, sizeof(string), "Nuklearna bomba ce biti bacena na %s.", gTeamBase[gNuke[NUKE_BASE]][b_name]);
        SCMToAll(COLOR_LIGHTBLUE, string);

        SetTimerEx("OnPlayerLaunchNuke", (6 * 1000), false, "ii", playerid, gNuke[NUKE_BASE]);
        gNuke[NUKE_TIME] = NUKE_INTERVAL;
    }
}



public OnPlayerLaunchNuke(playerid, baseid)
{
gNuke[NUKE_BASE] = -1;

new kills;
new string[144];
new Float:pos[3];
foreach(new i : Player)
{
if( i != playerid &&
  IsPlayerInGangZone(i, gTeamBase[baseid][b_base]) &&
GetPlayerTeam(i) != GetPlayerTeam(playerid) &&
! GetPlayerVirtualWorld(i) &&
! GetPlayerInterior(i) &&
IsPlayerSpawned(i) &&
(GetPlayerTeam(i) < sizeof(TEAM) || GetPlayerTeam(i) == NO_TEAM))
{
  GetPlayerPos(i, pos[0], pos[1], pos[2]);
    CreateExplosion(pos[0] + 2, pos[1], pos[2], 6, 5);
    CreateExplosion(pos[0] - 2, pos[1], pos[2], 6, 5);

SetCustomHealth(i, 0.0);

format(string, sizeof(string), "Ubio si %s(%i) sa nuklearnom bombom", GetName(i), i);
SCM(playerid, COLOR_ORANGE_RED, string);

GivePlayerCash(playerid, 115);

CallLocalFunction("OnPlayerCustomDeath", "iii", i, playerid, 51);

kills += 1;
}
}
return 1;
}



CMD:nuke(playerid)
{
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, 283.1531, 475.3052, 30.3334))
{
return SCM(playerid, COLOR_ORANGE_RED, "* Nisi na mjestu..");
}


    new string[256];

    new dialogstr[144];
    for(new i; i < sizeof(gTeamBase); i++)
    {
    format(string, sizeof(string), "%s\n", gTeamBase[i][b_name]);
    strcat(dialogstr, string);
    }

if(GetPlayerDialogID(playerid) != INVALID_DIALOG_ID) return 1;

return ShowPlayerDialog(playerid, DIALOG_NUKE, DIALOG_STYLE_LIST, "Bomba", dialogstr, "Izaberi", "Zatvori");
}


Ako još nešto treba recite.


Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //
Naslov: Odg: Nuklearna Boma sa Textdraw.
Poruka od: Skorpija_026 poslato Jul 05, 2018, 19:56:53 POSLE PODNE
stavis da ti na cmd PlayerTextDrawShow(playerid, tdove); pa isto OnPlayerClick.!!!
Naslov: Odg: Nuklearna Boma sa Textdraw.
Poruka od: Plen Ki Mun poslato Jul 05, 2018, 20:49:47 POSLE PODNE
Citat: Skorpija poslato Jul 05, 2018, 19:56:53 POSLE PODNE
stavis da ti na cmd PlayerTextDrawShow(playerid, tdove); pa isto OnPlayerClick.!!!


Bravo kolumbo za to sam i sam znao, čitaj gore Å¡to sam napisao  :D
Naslov: Odg: Nuklearna Boma sa Textdraw.
Poruka od: Bašovski poslato Jul 05, 2018, 21:17:38 POSLE PODNE
Jednostavno smjestis u varijablu koju je stranu igrac odabrao. Pisao sam preko mobitela, trebalo bi raditi...
Takodje na connectu igraca postavi vrijednost varijable NuklearkaTD na -1.
[pawn]new
    NuklearkaTD[ MAX_PLAYERS ] = { -1, ... };
#define nuke_DESNA 1
#define nuke_LIJEVA 2

public OnPlayerClickPlayerTextDraw( playerid, PlayerText:playertextid ) {
    if( NuklearkaTD[ playerid ] != -1 ) {
        if( playertextid == SelectBase ) {
            if( NuklearkaTD[ playerid ] == nuke_DESNA ) {
                 // ovdje ide kod za aktiviranje desne nuklearke
            }
            else {
                // ovdje ide kod za aktiviranje lijeve nuklearke
            }
        }
        else if( playertextid == NukeLeftButton[ playerid ] ) NuklearkaTD[ playerid ] = nuke_LIJEVA;
        else NuklearkaTD[ playerid ] = nuke_DESNA;
    }
    return (true);
}[/pawn]