Jump to content

Banka Přes Dialog


AvestX

Recommended Posts

Hi all.

Předělal jsem banku od foresta.

 

Takto to bylo:

Takže nejdřív si nadefinujeme PICKUP (jako banku) takže mezi NEWS dáme:

new bankapickup;

Potom vytvoříme PICKUP pro banku,takže do public OnGameModeInit() dáme:

bankapickup = CreatePickup(IDpickupu,1,X,Y,Z); //IDpickupu - doplnte si cislo PICKUPU, 1 nechte je to druh respawnu a místo XYZ doplnte souradnice,kde bude stát PICKUP

 

Teď co se stane,když stoupneme do PICKUPU, takže do public OnPlayerPickUpPickup(playerid, pickupid) dáme:

if(pickupid == bankapickup) //pokud se pickup rovná bankapickup proveď:
{ //počáteční závorka, co se stane v PICKUPU
SendClientMessage(playerid,COLOR_ORANGE,"Nyní jsi v bance"); //pošle zprávu "Nyní jsi v bance" v oranžové barvě
SendClientMessage(playerid,COLOR_YELLOW,"Použij:"); //pošle zprávu "Použij:" ve žluté barvě
SendClientMessage(playerid,COLOR_WHITE,"/uloz, /vyber, /stav"); //pošle zprávu "/uloz, /vyber, /stav" v bílé barvě 
} //konečná závorka, co se stane v PICKUPU

 

A teď už příkazy pro Bank System,takže pokud ještě nemáte tak ostatním DEFINE dáme:

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //definice DCMd příkazu (pokud máte již v módu, tak vynechte

 

Teď definice příkazů ULOŽ, VÝBĚR, STAV takže do public OnPlayerCommandText(playerid, cmdtext[]) dáme:

dcmd(uloz,4,cmdtext);
dcmd(vyber,5,cmdtext);
dcmd(stav,4,cmdtext);

 

A nakonec už jen jednotlivé příkazy, takže někam dolu do módu

 

ULOŽ:

dcmd_uloz(playerid,params[]) {
if(IsPlayerInSphere(playerid, X,Y,Z,5) == 1) //za XYZ doplne stejne souradnice jako v PICKUPU  a 5 nechte to je tzvn. radius (jak daleko od PICKUPU může použít příkaz)
{
new castka = strval(params[0]);
if(!params[0])
{
SendClientMessage(playerid, COLOR_WHITE, "[ ~ ] /uloz ( € )");
return 1;
}
new string[256];
new string2[256];
if(IsPlayerConnected(playerid)){
new sendermoney = GetPlayerMoney(playerid);
if(castka <= sendermoney){
if(castka > 0){
bank[playerid] +=castka;
GivePlayerMoney(playerid,-castka);
format(string, sizeof(string), "Bylo uloženo %d€ na tvé konto", castka);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string2, sizeof(string), "Stav tvého konta : %d€", bank[playerid]);
SendClientMessage(playerid, COLOR_YELLOW, string2);
}else{
SendClientMessage(playerid, COLOR_RED2, "> ! < Chybná částka");
}}else{
SendClientMessage(playerid, COLOR_RED2, "> ! < Nemáš tolik peněz na tento vklad");
}}
}
return true;
}

 

VÝBĚR:

dcmd_vyber(playerid,params[]) {
if(IsPlayerInSphere(playerid,X,Y,Z,5) == 1) //za XYZ doplne stejne souradnice jako v PICKUPU  a5 nechte to je tzvn. radius (jak daleko od PICKUPU může použít příkaz)
{
new castka = strval(params[0]);
if(!params[0])
{
SendClientMessage(playerid, COLOR_WHITE, "[ ~ ] /vyber ( € )");
return 1;
}
new string[256];
new string2[256];
if(IsPlayerConnected(playerid))
{
if(castka <= bank[playerid]){
if(castka > 0){
bank[playerid] -=castka;
GivePlayerMoney(playerid,castka);
format(string, sizeof(string), "Bylo vybráno %d€ z tvého konta", castka);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string2, sizeof(string), "Stav tvého konta : %d€", bank[playerid]);
SendClientMessage(playerid, COLOR_YELLOW, string2);
}else{
SendClientMessage(playerid, COLOR_RED2, "> ! < Chybná částka");
}}else{
SendClientMessage(playerid, COLOR_RED2, "> ! < Nemáš tolik peněz v bance");
}}
}
return true;
}

 

STAV:

dcmd_stav(playerid,params[]) {
if(IsPlayerInSphere(playerid,X,Y,Z,5) == 1) //za XYZ doplne stejne souradnice jako v PICKUPU  a5 nechte to je tzvn. radius (jak daleko od PICKUPU může použít příkaz)
{
#pragma unused params
new string[256];
format(string, sizeof(string), "Stav tvého konta : %d€", bank[playerid]);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
return 1;
}

 

Dolu do módu:

IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius)
{
if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius){
return 1;
}
return 0;
}

GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z)
{
new Float:x1,Float:y1,Float:z1;
new Float:tmpdis;
GetPlayerPos(playerid,x1,y1,z1);
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2));
return floatround(tmpdis);

 


Předěláno na dialog:

 

//--------| ' Includes ' |-------|

#include

//--------| ' Defines ' |-------|

#define COLOR_RED2 0xFF0000AA

#define COLOR_YELLOW 0xFF0000AA

//--------| ' New ' |-----------|

new BankaPick[1];

new Banka[MAX_PLAYERS];

//--------| ' Other ' |---------|

forward GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z);

forward IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius);

//______________________________________________________________________________

 

public IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius)

{

if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius) return 1;

return 0;

}

public GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z)

{

new Float:x1,Float:y1,Float:z12,Float:tmpdis;

GetPlayerPos(playerid,x1,y1,z12);

tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)

+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z12)),2));

return floatround(tmpdis);

}

//==============================================================================

 

public OnFilterScriptInit()

{

BankaPick[0] = CreatePickup(1274,1,X,Y,Z);

return 1;

}

//==============================================================================

public OnFilterScriptExit()

{

DestroyPickup(BankaPick[0]);

return 1;

}

//==============================================================================

public OnPlayerPickUpPickup(playerid, pickupid)

{

if(pickupid == BankaPick[0])

{

ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Banka","Vložit peníze\nVybrat peníze\nStav peněz na účtu","Potvrdit","Nic");

}

return 1;

}

//==============================================================================

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{

if(dialogid == 1)

{

if(response == 1)

{

if(listitem == 0)

{

ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Banka","Vložit peníze na svůj účet.\nNapiš částku.","Vložit","Konec");

}

else if(listitem == 1)

{

ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Banka","Vybrat peníze z tvého účtu.\nNapiš částku.","Vybrat","Konec");

}

else if(listitem == 2)

{

new string[256];

format(string, sizeof(string), "V bance na účtu máš nyní\n\n%d$", Banka[playerid]);

ShowPlayerDialog(playerid,486,DIALOG_STYLE_MSGBOX,"Banka",string,"Ok","Konec");

}

}

}

//==============================================================================

if(dialogid == 2)

{

if(response == 1)

{

if(IsPlayerInSphere(playerid, X,Y,Z,5) == 1)

{

new castka = strval(inputtext[0]);

if(!inputtext[0])

{

ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Banka","Musíš napsat nějákou částku !\nNapiš částku.","Vložit","Konec");

return 1;

}

new string[256];

new string2[256];

if(IsPlayerConnected(playerid))

{

new sendermoney = GetPlayerMoney(playerid);

if(castka <= sendermoney)

{

if(castka > 0)

{

Banka[playerid] +=castka;

GivePlayerMoney(playerid,-castka);

format(string, sizeof(string), "Ulozil jsi si na konto %d$", castka);

SendClientMessage(playerid, COLOR_YELLOW, string);

format(string2, sizeof(string), "Stav tvého konta : %d€", Banka[playerid]);

SendClientMessage(playerid, COLOR_YELLOW, string2);

}else{

ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Banka","Musíte zadat číslo !\nNapiš částku.","Vložit","Konec");

}

}else{

ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Banka","Nemáte u sebe tolik peněz !\nNapiš částku.","Vložit","Konec");

}

}

}

}

}

//==============================================================================

if(dialogid == 3)

{

if(response == 1)

{

if(IsPlayerInSphere(playerid,X,Y,Z,5) == 1)

{

new castka = strval(inputtext[0]);

if(!inputtext[0])

{

ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Banka","Musíš napsat částku !\nNapiš částku.","Vybrat","Konec");

return 1;

}

new string[256];

new string2[256];

if(IsPlayerConnected(playerid))

{

if(castka <= Banka[playerid])

{

if(castka > 0)

{

Banka[playerid] -=castka;

GivePlayerMoney(playerid,castka);

format(string, sizeof(string), "Bylo vybráno %d€ z tvého konta", castka);

SendClientMessage(playerid, COLOR_YELLOW, string);

format(string2, sizeof(string), "Stav tvého konta : %d€", Banka[playerid]);

SendClientMessage(playerid, COLOR_YELLOW, string2);

}else{

ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Banka","Musíte zadat číslo !\nNapiš částku.","Vybrat","Konec");

}

}else{

ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Banka","V bance nemáš tolik peněz !\nNapiš částku.","Vybrat","Konec");

}

}

}

}

}

return 1;

}

 


Doufam že se vám to bude líbit :) ještě si přidejte souřadnice, a ostatní ...

Link to comment
Share on other sites

Dobrý nápad, to mě nenapadlo :) možná to použiju (STYL) Sorry, ale kopirování užnení moje parketa to už přenechám mladším ročníkům :d akorat se na to budu muset naučit jak s dialogem zacházet :d ale nemyslimsi že to bude nějak Extra Těžký :)

 

---> 9,9/10,0 vzdy je co vylepsit :d ale inac pekne udelane ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...