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): //
stavis da ti na cmd PlayerTextDrawShow(playerid, tdove); pa isto OnPlayerClick.!!!
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
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]