Jump to content
  • 0

pomoc Checkpoint - Bug - Prohazovaní


Polisek

Dotaz

Zdravím potřebuji opět menší help prohazují se mi Checkpointy

Musím říct že zatu dobu co pawním jsem ještě z Checkpointy nepracoval 

a ted když ho potřebuji tak se mi začali prohazovat 2 Akce

 

Takže ted jsem dám kod a doufám že řeknete proč se to prohazuje

 

Co se prohazuje ?

Útěk z Vězení 

A

Nošení beden

 

 

Proměny

new pokusoutek[MAX_PLAYERS];
new prace[MAX_PLAYERS];

Definace

Snad nevadí že u CP mám pár definací na víc

//Job
#define CP2 2
#define CP3 3
#define CP4 4
#define CP5 5
#define CP6 6
#define CP7 7
#define CP8 8
#define CP9 9
/////////////
#define DP3 3
#define DP4 4
#define DP5 5
#define DP6 6
#define DP7 7
#define DP8 8
#define DP9 9
#define DP10 10
#define DP11 11

Vyvolaní:

Prace:

    if(dialogid == 30)        {
        if(!response)
        return 1;
        switch(listitem)
    {
    case 0:
        {
SetPlayerCheckpoint(playerid,103.5373,1987.7202,18.6279,7.0);
prace[playerid] = CP3;
SetPlayerAttachedObject(playerid, 3, 1271, 2, -0.500, 1.0, 0.0, 2.50, 84.60, 82.2, 1, 1, 1, 0xFF00FF00);
SetTimerEx("Animace",2000,0,"i",playerid);       
SendClientMessage(playerid,BARVA_ORANZOVA,"Vzal jsi bednu");
//3798
}
            }
            }

Pokus o útěk

if(newkeys == KEY_WALK){if(IsPlayerInSphere(playerid,2748.2598,-1330.0469,379.5832, 3) == 1){
SetPlayerPos(playerid,33.4605,2290.7520,26.5469);
SetPlayerCheckpoint(playerid,395.2983,2529.3325,16.5573,7.0);
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Úspešně jsi vylezl z kanálu\n Jdi za Checkpointem co se ti ukázal na mapě. !", "Okey", "Ukončit");
pokusoutek[playerid] = DP3;
}
}

OnPlayerEnterCheckpoint

public OnPlayerEnterCheckpoint(playerid){
switch(prace[playerid]) {
case CP2:
{
SendClientMessage(playerid,BARVA_ORANZOVA,"Pracuješ.....");
}
case CP3:
{
if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
DisablePlayerCheckpoint(playerid);
SetPlayerScore(playerid,GetPlayerScore(playerid) +2);
PlayerInfo[playerid][pScore] +=2;
SendClientMessage(playerid,BARVA_ORANZOVA,"Odnesl jsi bednu    Score +2");
ApplyAnimation(playerid,"BOX","catch_box",4.1,0,1,1,1,1);
SetTimerEx("box",1000,0,"i",playerid);
          }
          }
          ///////
switch(pokusoutek[playerid]) {
case DP3:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Vem jsi letadlo a let na letiště v Los Santos (Na minimapě). !", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1978.7399,-2389.2031,13.5469,7.0);
pokusoutek[playerid] = DP4;
}
case DP4:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Jdi do garáže tvého kamaráda v El Colone. !", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1935.4286,-2023.2664,13.5469,7.0);
pokusoutek[playerid] = DP5;
}
case DP5:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Garaž je zamčená!\nPři odchodu z garáže jsi našel papírek z Čísli:739780165 (Zapamatuj jsi ho muže se ti hodit)\nJdi k lodnímu přístavu na pláži v Los Santos. !", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1932.8766,-2030.2222,13.5469,5.0);
pokusoutek[playerid] = DP6;
}
case DP6:
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,2932.6833,-2049.5964,3.5480,7.0);
pokusoutek[playerid] = DP7;
}
case DP7:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Vem jsi Lod a plav k Palonimo Creek k Rybařskému obydlí. !", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,2105.9180,-101.5023,2.0422,7.0);
pokusoutek[playerid] = DP8;
}
case DP8:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Jdi k chatě tvého přítele Jamese Angela", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1062.3949,-314.2740,74.9641,5.0);
pokusoutek[playerid] = DP9;
}
case DP9:
{
ShowPlayerDialog(playerid, 1112, DIALOG_STYLE_MSGBOX, "Utekl","Dům zamčen zkus zadat kod co jsi našel u Garáže v Los Santos.\n(Vstup na Pickup a dej Levý ALT). !", "Okey", "Ukončit");
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1068.8704,-309.2756,74.9672,1.0);
pokusoutek[playerid] = DP10;
}
case DP10:
{
SendClientMessage(playerid,COLOR_YELLOW,"Úspešně jsi Utekl");
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,COLOR_GREEN,"Dostal jsi 50 bodu! Za úspešný útěk.");
SetPlayerScore(playerid,GetPlayerScore(playerid)+50);
SpawnPlayer(playerid);
}
}
return 1;
}

Děkuji za pomoc

 

Doufám že jsem to podal dostatečně tak aby to šlo pochopit co potřebuji

 

Polis_Polismanovic


Pro info prohazuje se  Nošení Beden z Útěkem


Pro info prohazuje se  Nošení Beden z Útěkem

 

Třeba že když vstoupím na Checkpoint v Útěku tak mi to někdy hodí že dostavám 2 body za odnešenou bednu

Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

public OnPlayerEnterCheckpoint(playerid){

 

se vyvolá když vstoupíš na checkpoint

 

switch(prace[playerid])

a

switch(pokusoutek[playerid])

 

se tím pádem provede vždy a vždy se provede to co máš zrovna v proměnné

 

jinými slovy chybí ti tam podmínka jestli je zrovna na útěku nebo nosí bednu... ve výše uvedeném publicu

 

//EDIT: nebo jednodušší věc, vyresetovat proměnné na hodnoty které nepoužíváš a tím zabráníš kolizím

Link to comment
Share on other sites

  • 0

Okey hele díky

 

Ale zkusil jsem upravit ale stejně se mi to furt buguje

 

 

Co přesně ?(Kod)

 

Kam ? (Kod)(Nejlépe)

 

Do publicu ale nejsem si jistej jakou podmínku myslíš

 

Zkoušel jsem čarovat něco z tímhle

if (IsPlayerInCheckpoint(playerid))

Ale nic moc    

 

Děkuji ještě za pomoc

 

Ale kdyby byla možnost nějak přesněji Specifikovat

 

 

Děkuji


Lidi stále se mi to prohazujete mužete mi jsem někdo hodit kod z upravou toho základního kodu co jsem dal nahoru

Link to comment
Share on other sites

  • 0
  • Globální moderátor

když poprvé pracuješ a jdeš na poslední checkpoint tak prace[playerid] = 3

 

tedy ve switch se provede case CP3:

 

no a potom když utíkáš z vězení tak máš zase pokusoutek[playerid] = "něco"

 

problém je, že když už jsi jednou pracoval a nevyresetoval tu "trojku" tak když vstoupíš na jakýkoliv checkpoint tak provede case CP3: a potom to pokračuje na ten druhý switch a provede se druhý switch pokusu o útěk. 

 

 

jedna možnost je, že podmínkou zabráníš vyvolávání jednoho nebo druhého switche, což je složitější, nebo druhá věc, v posledním checkpointu (vemu příklad práce) nastavíš hodnotu na nějakou, kterou vůbec nepoužíváš, pokud vidím dobře tak stačí ji nastavit na 0, tím se sice budou pokaždé projíždět oba switche, ale 0 nebude odpovídat žádné z možností a tak se nic nestane, a právě tím že tam je původní hodnota (třeba ta trojka po skončení práce) tak se to provede pokaždé při vstupu na checkpoint..

 

 

 

pokusoutek[plyerid] = 0; //vyresetuješ v posledním cp při pokusu nebo když se mu to nepovede
prace[playerid]; //vyresetuješ v posledním cp u práce, nebo když se mu to nepovede

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