Jump to content

návod Povolání Přes Dialog


Emppu

Recommended Posts

[TuT] Povolání přes dialog

 

Obtížnost: (podle pravidel doplní tuteři)

 

Obsah:


  • [*:1tohn3rv] Úvod
    [*:1tohn3rv] Co je to dialog?
    [*:1tohn3rv] Co budeme využívat?
    [*:1tohn3rv] Kódy a vysvětlení

Upozornění: Výplaty nejsou součástí tutorialu, toto je pouze vysvětlení principu

 

Úvod:

Pro začátek - vím, že to tu je, ale žádný není v sekci "Návody", proto se ho tam pokusím dostat.

 

Proč tedy zrovna přes dialog? Dle mého názoru se tam hodí. My budeme vytvářet dialog s dvěma možnostmi: Chceš se přidat k taxikářům? (Ano) (Ne). Po tomto kroku hráč dostane zbraně a skin.

 

Co je to dialog?

Dialog je okno, kde je otázka, 1 - 2 tlačítka, popřípadě seznam. Ten co budeme využívat my vypadá asi takto:

Dialog_style_msgbox.png

 

Myslím, že na vysvětlní Co je to dialog to zatím stačí. Pawněním a samozdřejmě i hraním se seznámíte s více druhy dialogu.

 

Co budeme využívat?

1) Samozdřejmě proměnné

2) Barvy

3) Různé zkratky, jako třeba SCM

4) IsPlayerInSphere

5) Dialogy

6) }else{

7) if(...

 

Kódy a vysvětlení

 

Takže, budeme potřebovat includ a_samp (v novém scriptu už je):

#include 

 

Přidáme pragmu kvůli tabování:

#pragma tabsize 0

 

Teď bychom si měli udělat definice:

#define COLOR_YELLOW 0xFFFF00AA
#define taxikar 4
#define SCM SendClienMessage

 

#define COLOR_YELLOW 0xFFFF00AA

#define taxikar 4

#define SCM SendClienMessage

 

Definujeme si COLOR_RED jako barvu

Definujeme "taxikar" jako dialog s ID 4

Pro ulehčení - nadefinujeme SCM jako SendClientMessage

 

Teď si musíme vytvořit nějaké proměnné

new Job;
new taxikarpick[1];

 

new Job;

new taxikarpick[1];

 

Proměnná povolání

Proměnná pickupu

 

Teď se přesuneme k publicu OnGameModeInit...

Zde si vytvoříme pickup na námi určených souřadnicích X, Y a Z. (Souřadnice tam dávám jako ukázkové)

 

taxikarpick[0] = CreatePickup(1581,1,2183.6685,1805.3363,11.0000);

taxikarpick[0] = CreatePickup(1581,1,2183.6685,1805.3363,11.0000);

Vytvoří pickup s id 1581 na zapsaných souřadnicích. Dovolí jej vyvolávat jako "taxikar"

 

Nyní se přesuneme k publicu OnPlayerPickuPickup a vytvoříme si dialog:

if(pickupid == taxikar)
{
ShowPlayerDialog(playerid,taxikarpick[0],DIALOG_STYLE_MSGBOX,"Zaměstnání - Taxikář", "Chceš se zaměstnat jako taxikář?","Ano","Ne");
}

 

if(pickupid == taxikar)

{

ShowPlayerDialog(playerid,taxikar,DIALOG_STYLE_MSGBOX,"Zaměstnání - Taxikář", "Chceš se zaměstnat jako taxikář?","Ano","Ne");

}

 

Pokud je ID pickupu

Ukáže hráči dialog s ID playerid (Nahoře jsme jej definovali). Typ dialogu bude MSGBOX, nadpis Zaměstnání - Taxikář, otázka Chceš se zaměstnant jako taxikář? Odpovědi - Ano, Ne

 

A nyní nás čeká poslední a asi nejtěžší část - public OnDialogResponse.

Přejdeme k němu:

if(dialogid == taxikar)
{
if(response == 1)
{
if(Job==1) {
SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");
} else {
SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako taxikář");
GivePlayerWeapon(playerid,22,100);
SetPlayerSkin(playerid, 171);
}
}

 

if(dialogid == taxikar)

{

if(response == 1)

{

if(Job==1) {

SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");

} else {

SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako taxikář");

GivePlayerWeapon(playerid,22,100);

SetPlayerSkin(playerid, 171);

}

}

 

Pokud je dialog "taxikar"

{

Pokud hráč klikne na tlačítko 1

{

Pokud je již jeho povolání "1"

Pošle zprávu

pokud není zaměstnán jako "1"

Pošle zprávu o tom, že se úspěšně zaměstnal

Dá hráči skin a zbraně (můžetes si upravit).

}

}

 

GivePlayerWeapon(playerid,IDZBRANE,NABOJE);

SetPlayerSkin(playerid, IDSKINU);

 

Autor: dadanek1999

Poděkování: Uživatel TonySVK za pomoc při mé epické chybě

Doba tvorby v Pawnu: cca 7 minut

Doba tvorby TuTu: přes hodinu :d

 

Tip: Prosím, nekopírujte to. Projděte si vysvětlivky, pochopte funkce, princip, jakým se tvoří povolání ať tomu rozumíte. Než napíšete komenář typu: "Mě to háže error..." skuste se zamyslet, co by to mohlo způsobit ;)

//EDIT: Ještě je možno použít IsPlayerInSphere http://www.pawno.cz/jak-zabranit-prohaz ... 23652.html

Link to comment
Share on other sites

Zbytočný tut....povolanie tu je milionkrát, dialog tu tiež je vysvetlený a ako povedla boban, IPIS je lepšie ako PU ;)

 

2/10 - Za úpravy a vysvetlenie

Link to comment
Share on other sites

sry ale 1/10 len koli uprave ale toto je tu x krat + rovno si to mal robit cez IPIS a ne PU a cele mi to pride trochu copy odtych co tu uz su :thumbdown:

 

Copy to není, je to vytažené z mého módu ;)

Link to comment
Share on other sites

to neznamena ze to neni copy 97% sk/cz serverov su copy scripty ;)

 

Doba kdy jsem kopíroval skončila tak před půl rokem :)

Pochopil jsem, že to nikam nevede a začal si tvořit vlastní věci :)

Link to comment
Share on other sites

  • 1 month later...

Hazi mi to

C:\Users\Lukinek\Desktop\Moje pawno vyrobky\Admin Povolani.pwn(43) : error 017: undefined symbol "SCM"
C:\Users\Lukinek\Desktop\Moje pawno vyrobky\Admin Povolani.pwn(45) : error 017: undefined symbol "SCM"

 

Radek 43: SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");

Radek 45:   SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako admins");

Link to comment
Share on other sites

Hazi mi to
C:\Users\Lukinek\Desktop\Moje pawno vyrobky\Admin Povolani.pwn(43) : error 017: undefined symbol "SCM"
C:\Users\Lukinek\Desktop\Moje pawno vyrobky\Admin Povolani.pwn(45) : error 017: undefined symbol "SCM"

 

Radek 43: SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");

Radek 45:   SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako admins");

 

daj si hore pod INC

 

#define SCM SendClientMessage

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...

zaměstnání se mi povedlo ale mám problém mam v public OnDialogResponse 2 veci regiset a ten jobs ale ono se mi to vždy spojí jobs a register jak to rozdelím

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

if(dialogid == 1)
{
if(response == 1)
{
if (udb_Exists(PlayerName(playerid))) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Přihlaš se ! napiš heslo","OK","QUIT");
if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Registrace","Musíš napsat heslo !","OK","QUIT");
if (udb_Create(PlayerName(playerid),inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Vyborně, nyní napiš znovu heslo !","OK","QUIT");
}else Kick(playerid);
}
//==============================================================================
if(dialogid == 2)
{
if(response == 1)
{
if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Musíš zadat heslo !\nNapiš heslo !","OK","QUIT");
if (udb_CheckLogin(PlayerName(playerid),inputtext))
{
GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid));
PLAYERLIST_authed[playerid] = true;
return SendClientMessage(playerid, 0xEFEFF7AA, "Úspěšně přihlášen !");}
return GameTextForPlayer(playerid,"SA-MP Welcome to San Fiero",5000,5);

return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Nespravne heslo !","OK","QUIT");

}else Kick(playerid);

}

//==================================jobs========================================

if(dialogid == taxikar)
  {
  if(response == 1)
  {
  if(Job==1) {
  SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");
  } else {
  SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako taxikář");
  GivePlayerWeapon(playerid,22,100);
  SetPlayerSkin(playerid, 171);
  }
  }
//==================================jobs========================================






return 1;
}

errors

C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(69) : warning 235: public function lacks forward declaration (symbol "ScoreUpdate")
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(861) : warning 213: tag mismatch
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(870) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(887) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(900) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(900) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(901) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(902) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(902) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(910) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(911) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(913) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(915) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(916) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(918) : warning 225: unreachable code
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(918) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(931) : error 017: undefined symbol "SendClienMessage"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(933) : error 017: undefined symbol "SendClienMessage"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(945) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(948) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(948) : error 004: function "OnPlayerClickPlayer" is not implemented
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(950) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(953) : warning 225: unreachable code
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(953) : error 017: undefined symbol "PlayerName"
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(957) : error 090: public functions may not return arrays (symbol "OnDialogResponse")
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(959) : warning 225: unreachable code
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(959) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(959) : error 004: function "OnVehicleSpawn" is not implemented
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(964) : error 079: inconsistent return types (array & non-array)
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(967) : warning 225: unreachable code
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(967) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Laďa\Plocha\server+pawn\pawno\mod.pwn(967) : error 004: function "OnVehicleDeath" is not implemented

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


26 Errors.

Link to comment
Share on other sites

 

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

{

if(dialogid == 1)

{

if(response == 1)

{

if (udb_Exists(PlayerName(playerid))) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Přihlaš se ! napiš heslo","OK","QUIT");

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Registrace","Musíš napsat heslo !","OK","QUIT");

if (udb_Create(PlayerName(playerid),inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Vyborně, nyní napiš znovu heslo !","OK","QUIT");

}else Kick(playerid);

}

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

if(dialogid == 2)

{

if(response == 1)

{

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Musíš zadat heslo !\nNapiš heslo !","OK","QUIT");

if (udb_CheckLogin(PlayerName(playerid),inputtext))

{

GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid));

PLAYERLIST_authed[playerid] = true;

SendClientMessage(playerid, 0xEFEFF7AA, "Úspěšně přihlášen !");

GameTextForPlayer(playerid,"SA-MP Welcome to San Fiero",5000,5);

} else return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrace","Nespravne heslo !","OK","QUIT");

}

}

 

//==================================jobs========================================

 

if(dialogid == taxikar)

{

if(response == 1)

{

if(Job==1)

{

SCM(playerid,COLOR_YELLOW,"[POVOLÁNÍ] Zde už jsi zaměstnán");

}

else

{

SCM(playerid, COLOR_YELLOW, "[POVOLÁNÍ] Zaměstnal jsi se jako taxikář");

GivePlayerWeapon(playerid,22,100);

SetPlayerSkin(playerid, 171);

}

}

}

//==================================jobs========================================

 

 

 

 

 

 

return 1;

}

 

proč furt kopíruješ? myslíš že se tim něco naučíš? tuty sou udělaný aby učili né ničili !

Link to comment
Share on other sites

  • 3 months later...

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