Jump to content
  • 0

pomoc Povolání


Hutt2

Dotaz

Zdravím. udělal jsem si vlastní povolání kurýra. Spočívá to v tom že se hráč zaměstná a vytvoří se mu balíček. Když hráč balíček vezme, vytvoří se checkpoint na který má hráč přijít. Potom hráč dostane peníze a vytvoří se další balíček který má doručit. Ten druhý balíček ale potom už nereaguje na to že ho hráč vzal. Sice se zničí, ale hráčovi se nepošle zpráva o tom, že balíček vzal, a nevytvoří se checkpoint.
 
Pod #include <a_samp>:

new cp[MAX_PLAYERS]; // Proměny kontrolující id checkpointu
 
new kuryr, // Název pickupu pro zaměstnání kurýr
kzamestnat[MAX_PLAYERS], // Jestli se můžeme zaměstnat jako kurýr (když je 0 můžeme, když 1 nemůžeme)
kbalicek[MAX_PLAYERS]; // Název pickupu balíčku
 
forward knezamestnat(playerid); // Název timeru (pokud hráč odmítne stát se kurýrem, nemůže pak práci sekundu vzít. Slouží proto aby se hráč v pickupu nebugnul, a neustálu mu vyjížděli nabídky pro zaměstnání)
 
OnPlayerSpawn:

public OnPlayerSpawn(playerid)
{
kuryr = CreatePickup(1210, 1, 1934.4349, 1322.4785, 9.2578, -1);
kzamestnat[playerid] = 0;
return 1;
}
 
OnPlayerEnterCheckpoint:

public OnPlayerEnterCheckpoint(playerid)
{
if (cp[playerid] == 101)
{
SendClientMessage(playerid, 0x990000, "Doručil jsi balíček! Odměna: 500$!");
SendClientMessage(playerid, 0x990000, "Bež vyzvednout další balíček!");
GivePlayerMoney(playerid, 500);
DisablePlayerCheckpoint(playerid);
 
switch(random(2))
{
  case 0:
{
kbalicek[playerid] = CreatePickup(1279, 8, 1931.2444, 1286.2791, 10.8203, -1);
}
case 1:
{
    kbalicek[playerid] = CreatePickup(1279, 8, 1920.1619, 1288.0454, 10.8203, -1);
}
}
}
return 1;
}
 
OnPlayerPickUpPickup:

public OnPlayerPickUpPickup(playerid, pickupid)
{
if (pickupid == kuryr)
{
   if (kzamestnat[playerid] == 0)
   {
ShowPlayerDialog(playerid, 101, DIALOG_STYLE_MSGBOX, "Kurýr", "Chceš se zaměstnat jako kurýr?", "Ano", "Ne");
}
}
 
else
 
if (pickupid == kbalicek[playerid])
{
SendClientMessage(playerid, 0x990000, "Sebral jsi balíček! Běž ho doručit!");
cp[playerid] = 101;
 
switch(random(2))
{
case 0: SetPlayerCheckpoint(playerid, 1966.4708, 1288.3685, 10.8203, 3.0);
case 1: SetPlayerCheckpoint(playerid, 1978.3108, 1288.9065, 10.8203, 3.0);
}
}
return 1;
}
 
OnDialogResponse:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 101)
{
if (response)
{
kzamestnat[playerid] = 1;
SendClientMessage(playerid, 0x990000, "Zaměstnal ses jako kurýr! Bež vyzvednout balíček!");
 
switch(random(2))
{
   case 0:
   {
kbalicek[playerid] = CreatePickup(1279, 8, 1931.2444, 1286.2791, 10.8203, -1);
}
case 1:
{
                    kbalicek[playerid] = CreatePickup(1279, 8, 1920.1619, 1288.0454, 10.8203, -1);
}
}
}
else
{
kzamestnat[playerid] = 1;
SetTimerEx("knezamestnat", 1000, false, "id", playerid);
}
}
return 1;
}
 
Timer:
public knezamestnat(playerid)
{
kzamestnat[playerid] = 0;
}

Link to comment
Share on other sites

3 odpovědí na tuto otázku

Recommended Posts

  • 0

Checkpointy nějak neumím, ale pokusím se poradit. Trochu mě zaráží co má být if (cp[playerid] == 101) konkrétně to 101. Vím, že to je akorát id toho dialogu, ale myslím si že ty checkpointy bys měl pojmenovat např cp1 = SetPlayerCheckpoint(..) A pak dáš if(cp[playerid] == cp1)

A zajímala by mě tvoje myšlenka mít zaměstnávání na timer. 


 

Link to comment
Share on other sites

  • 0

To 101 jé ID chcekpointu. Kontroluje to jestli hráč vstoupil na ten chceckpoint, na který měl doručit balíček. Ten timer je tu proto: Když sebereš pickup povolání kurýr, zobrazí si ti dialog. V dialogu je otázka jestli se chceš stát kurýrem. Pokud dáš ano zaměstnáš se, ale pokud dáš ne nezaměstnáš se. A ten timer je tu proto, pokud dáš to ne. Když dáš totiž ne, dialog zmizí, ale hned se zase objeví jestli se chceš zaměstnat. Takhle ti to nabídne jestli se chceš zaměstnat až za 1 sekundu aby měl hráč čas s pickupu odejít.

 

Díky za pomoc, ale už jsem to vyřešil a funguje to perfektně. Chybělo tam DestroyPickup.

Link to comment
Share on other sites

  • 0

Je dobře, že jsi to vyřešil, ale poradím ti ten pickup vyřeš jinak. Ten timer je zbytečný aspoň pokud vím.

Stačí to udělat na tlačítko, resp. dialog pustí kdy on bude chtít. Podle mě ušetříš strašně server. Já osobně dělám všechny dialogy a alt. 

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