Jump to content

návod Banka [NEW]


Fr0st

Recommended Posts

Dobrý deň.. Môj posledný tutoriál ohľadom banky sa moc nevydaril tak teraz vám sem prinášam nový s viac popísanými funkciami a bez bugov :) ..

 

Takže. Začneme premenami.. :)

 

new BankMoney[MAX_PLAYERS];

 

- Do tejto premeny budeme ukládať hráčove peniaze ktoré má uložené v banke.

 

Teraz si vytvoríme pickup do ktorého keď vstúpime tak sa nám zobrazí dialog z bankovými funkciami.

 

do OnGameModeInit si vložíme :

 

CreatePickup(1274,1,X,Y,Z,VW);

 

- Funkcia CreatePickup ma takéto parametre:

- 1274 - ID Pickupu.. Všetky pickupy nájdete na http://wiki.sa-mp.com/wiki/Pickup_IDs

- 1 - TYP, 1 znamená že nikdy nezmizne všetky TYPY nájdete na http://wiki.sa-mp.com/wiki/PickupTypes

- X,Y,Z - Súradnice kde sa má pickup vytvoriť..

- VW - To je niečo ako hráčov svet.. Keď dáte napr. 3 tak ho bude vidieť iba hráč ktorý je v tom virtual worlde.. Ak chcete aby sa zobrazoval v každom VW zadajte tam -1

 

takže.. Pickup máme vytvorený. Teraz ideme do funkcie OnPlayerPickupPickup:

 

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(IsPlayerInRangeOfPoint(playerid,radius,X,Y,Z))
{
ShowPlayerDialogEx(playerid,ID,DIALOG_STYLE_LIST,"Banka","Vybrať\nVložiť\nStav","Vybrať","Zrušiť");
}
return 1;
}

 

- funkcia IsPlayerInRangeOfPoint bola už preddefinovaná v SAMPe takže sa nemusíte strachovať že nebudete mať stock alebo define na to .. Táto funkcia slúži na kontrolu pozície.. Takže si ju prebereme:

 

- playerid - toto je všetkým hadam jasné..

- radius - radius znamená že do akej vzdialenosti od pickupu sa má dialog otvoriť..

- X,Y,Z - Sem vložíme súradnice ktoré sme dávali aj pri funkcií CreatePickup..

 

- funkcia ShowPlayerDialog slúži na otvorenie dialógu :d Čo k tomu viac dodať.. Rozoberieme si aj tú:

 

- playerid - toto je všetkým hadam jasné..

- ID - toto je dialogid.. Nikdy nemôžete dať na 2 dialógy to isté ID lebo sa vám bugnú..

- DIALOG_STYLE_LIST - je štýl dialógu.. Všetky štýly nájdete na http://wiki.sa-mp.co...i/Dialog_Styles

- "banka" - nadpis v dialógu.

- "vybrať\nvložiť\nstav" - toto sú vlastne kolonky ktoré sa dajú stlačiť.. Pozor jak tam nedáte \n dá sa vám to do jedného riadku a bude to nefunkčné..

- "Vybrať" - tlačidlo 1 (response 1)

- "Zrušiť" - tlačidlo 0 (response 0)

 

teraz keď už sme si spravili dialóg presunieme sa do public OnDialogResponse..

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == ID)
{
if(response == 1)
{
if(listitem == 0)
{
ShowPlayerDialogEx(playerid,DIALOG_VYBRAT,DIALOG_STYLE_INPUT,"Vybrať peniaze","Napíš koľko chceš vybrať","Vybrať","Zrušiť");
}
else if(listitem == 1)
{
ShowPlayerDialogEx(playerid,DIALOG_VLOZIT,DIALOG_STYLE_INPUT,"Vložiť peniaze","Napíš koľko chceš vložiť","Vložiť","Zrušiť");
}
else if(listitem == 2)
{
new string[128];
format(string,128,"Na tvojom účte je %d $",BankMoney[playerid]);
ShowPlayerDialogEx(playerid,DIALOG_STAV,DIALOG_STYLE_MSGBOX,"Stav účtu",string,"OK","");
}
}
}

if(dialogid == DIALOG_VYBRAT)
{
if(response == 1)
{
if(BankMoney[playerid] < strval(inputtext)) return SendClientMessage(playerid,-1,"Nemáš toľko na účte");
if(!IsNumeric(inputtext)) return SendClientMessage(playerid,-1,"Musíš zadať číselnú hodnotu !");
BankMoney[playerid]-=strval(inputtext);
GivePlayerMoney(playerid,strval(inputtext));
}
}

if(dialogid == DIALOG_VLOZIT)
{
if(response == 1)
{
if(strval(inputtext) > GetPlayerMoney(playerid)) return SendClientMessage(playerid,-1,"Zle zadaná čiastka !");
if(!IsNumeric(inputtext)) return SendClientMessage(playerid,-1,"Musíš zadať číselnú hodnotu !");
BankMoney[playerid]+=strval(inputtext);
GivePlayerMoney(playerid,-strval(inputtext));
}
}
return 1;
}

 

Funkcie ktoré nemusia byť nováčikom jasné:

 

- strval(string) - Funkcia ktorá premieňa na čísla.. Neviem ako to mám presne popísať.. :)

- format :

- string - premena stringu (new string[128])

- 128 - Veľkosť poľa ktorá bola nadefinovaná v stringu

- format - Vlastne sa používa na zobrazenie hodnoty ktorá je ukrytá v premene..

- argumenty - Vlastne tak ako my sme mali mali sme %d tj celé čislo a chceli sme vedieť koľko má dolárov tak sme do argumenta dali BankMoney[playerid]..

 

Keby ste tomu stále nerozumeli tak si to pozrite tu http://wiki.sa-mp.com/wiki/Format

 

- GivePlayerMoney - funkcia pomocou ktorej pripočitáme / odpočitáme hráčovi peniaze..

- playerid, čiastka, tj napr GivePlayerMoney(playerid,4000); pripočíta hráčovi 4000 $..

 

Všetko ostatné ako je dialogid response atď nejdem vysvetlovať.. Jak neviete robiť s dialógmi tu je nato podrobný tutoriál http://pawno.cz/topi...-vsetko-o-nich/

 

Niekde do módu si vložte tento stock ale nie do publicu !! :d

 

stock IsNumeric(const string[])
{
new length=strlen(string);
if (length==0) return false;
for (new i = 0; i < length; i++)
{
 if ((string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')|| (string[i]=='-' && i!=0)|| (string[i]=='+' && i!=0)) return false;
}
if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
return true;
}

 

a ešte tento .. Použil som ShowPlayerDialogEx kvôli tomu aby vám nepreskakovali kolonky..

 


Hore do módu :
new bool:ShowedPlayerDialog[MAX_PLAYERS];

Niekde do módu nie do publicu !

stock ShowPlayerDialogEx(playerid, id, style, lis[], mess[], button1[], button2[])
{
if(ShowedPlayerDialog[playerid] == true) return false;
ShowPlayerDialog(playerid, id, style, lis, mess, button1, button2);
ShowedPlayerDialog[playerid] = true;
return true;
}

Do OnDialogResponse pod prvú "{"

ShowedPlayerDialog[playerid]=false;

 

Ukladanie :

 

Do OnPlayerConnect:

 

new cesta[50];
format(cesta,50, "/Banky/%s.sav", PlayerName(playerid));
BankMoney[playerid] = dini_Int(cesta, "banka");

 

Do OnPlayerDisconnect:

 

new cesta[50];
format(cesta, 50, "/Banky/%s.sav", PlayerName(playerid));
if(!dini_Exists(cesta))
{
dini_Create(cesta);
}
else
{
dini_IntSet(cesta, "banka", BankMoney[playerid]);
}

 

stock PlayerName.. :

 

stock PlayerName(playerid)
{
new name[128];
GetPlayerName(playerid, name, 128);
return name;
}

 

Na dini tu dával mattsy tutoriál takže to popisovať nemusím..

 

// Dúfam že sa to bude všetký páčiť a najmä tým ktorý nechceli aby som tento tutoriál spravil .. :)

 

P.S Nekopírujte ale naučte sa to :d

 

Jak sa chcete niečo spýtať alebo vám to bolo málo objasnené napíšte mi na skype tomas.spanik1 !

 

:oops:

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • Administrátor

Za

1. Píšeš návod tak by měl být všeobecný. Tudíš na nějaké ShowPlayerDialogEx na to si sere bílej tesák.(Byť jsi sem fci dal)

2. Scripty s "řešením" v OnPlayerPickUpPickup kde se menu otevře po vstupu na pickup je už trošku starý nemyslíš ?

 

Jinak je to podle mě strašně nepřehledný... Máš tu wyvysg editor tak si hraj s barvou textu a podobně... A prosím tě tabuj :d

Link to comment
Share on other sites

No dobre.. Aj ukladanie dorobím.. :)

 

// Už som to opravil je pridané aj ukladanie :), ewwe keby sa dalo v


tabovať tak by som to určite taboval ale písal som to z hlavy takže.. Až na ten stock a ukladanie :d:)

Link to comment
Share on other sites

#define DIALOG_VYBRAT
#define DIALOG_VLOZIT

 

toto maš kde v lese?

 

tie názvy dialógov som dal len tak -_- nevieš si dať ID dialógu ešte aj to ti tam mám dať ? :d

Link to comment
Share on other sites

Technotomo - Když je to návod, tak tam má být vše..

 

Ale toto :"JE to dobre hodim si to do modu " - Je zabité xD

 

vieš rožek :d Ja robím napr toto že ",ID," if(dialogid == ID) aby sa trocha potrápili.. Veď keby som tam všetko spravil tak už to môžem dať rovno do scriptov.. :d

Link to comment
Share on other sites

  • 1 year later...

Po dvou týdnech snažení jsem to vzdal.

 

Kdo mě to pošle ve formě FilterScriptu a trochu povysvětlí dostane odměnu ve formě prázdné krabice.

 

Né ale fakt bych to chtěl funkční v Pawnu abych si zkontroloval veškeré chyby které tam mám.

Mě to absolutně nefunguje a píše přes 30 Errorů.

Raději jsem to smazal abych si nezasral celý mod.

 

Pište na facebook : Danex Kycmer

Link to comment
Share on other sites

Po dvou týdnech snažení jsem to vzdal.

 

Kdo mě to pošle ve formě FilterScriptu a trochu povysvětlí dostane odměnu ve formě prázdné krabice.

 

Né ale fakt bych to chtěl funkční v Pawnu abych si zkontroloval veškeré chyby které tam mám.

Mě to absolutně nefunguje a píše přes 30 Errorů.

Raději jsem to smazal abych si nezasral celý mod.

 

Pište na facebook : Danex Kycmer

Nojo... to je tím že dáváš ctrl + c a ctrl + v :) a jak koukám tak tobe trva všechno 2*7 dnu...

 

a gratuluju že si oživil starou temu...

Link to comment
Share on other sites

Po dvou týdnech snažení jsem to vzdal.

 

Kdo mě to pošle ve formě FilterScriptu a trochu povysvětlí dostane odměnu ve formě prázdné krabice.

 

Né ale fakt bych to chtěl funkční v Pawnu abych si zkontroloval veškeré chyby které tam mám.

Mě to absolutně nefunguje a píše přes 30 Errorů.

Raději jsem to smazal abych si nezasral celý mod.

 

Pište na facebook : Danex Kycmer

Asi budeš banned 

Link to comment
Share on other sites

Po dvou týdnech snažení jsem to vzdal.

 

Kdo mě to pošle ve formě FilterScriptu a trochu povysvětlí dostane odměnu ve formě prázdné krabice.

 

Né ale fakt bych to chtěl funkční v Pawnu abych si zkontroloval veškeré chyby které tam mám.

Mě to absolutně nefunguje a píše přes 30 Errorů.

Raději jsem to smazal abych si nezasral celý mod.

 

Pište na facebook : Danex Kycmer

Ten návod nie aj tak dobre spravený, zdá sa mi, že sa neukladajú peniaze v banke, takže to je zbytočné.

 

 

Asi budeš banned 

Prečo by mal? Tu už dávno nikoho nezaujíma, že niekto oživí starú tému.

Link to comment
Share on other sites

Ten návod nie aj tak dobre spravený, zdá sa mi, že sa neukladajú peniaze v banke, takže to je zbytočné.

 

 

Prečo by mal? Tu už dávno nikoho nezaujíma, že niekto oživí starú tému.

 

Ukladanie by malo byť dobre spravené a ak ti nefunguje tak si sprav vlastne. Myslím že to si už každý dokáže spraviť. Je to tutoriál hlavne na banku a nie na ukládanie ...

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...