Peršokti į turinį
Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė

[FIX] GUI crash


ES.^

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3215 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

[FIX] GUI crash


Aprašymas:
Skriptas skirtas apsaugoti jūsų serverį nuo GUI crash'o. Kas nežino - tai sa-mp klaida, kurios niekas netaiso, o pasinaudojus šia klaida, galima lengvai padėti serverį - užtenka įrašyti į GUI langą (kurio tipas DIALOG_STYLE_INPUT arba DIALOG_STYLE_PASSWORD) simbolį %. Skriptas veikia tokiu principu: perrenka įvestą tekstą ir pakeičia visus % simbolius į -.

Kodas:
new bool:PDS[MAX_PLAYERS];
stock j_ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
        ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
        switch(style)
        {
                case DIALOG_STYLE_INPUT, DIALOG_STYLE_PASSWORD: PDS[playerid] = true;
        }
        return 1;
}
#define ShowPlayerDialog j_ShowPlayerDialog
stock FixGuiInputtedText(str[], size)
{
        for(new c; c < size; c++)
        {
                if(str[c] == 0x25) str[c] = 0x2D;
        }
        return 1;
}
- Šį kodą reikia dėti į modo pradžią, geriausia - iš karto po include'ais.
Taip pat reikia pridėti šį kodą:
if(PDS[playerid])
{
        FixGuiInputtedText(inputtext, strlen(inputtext));
        PDS[playerid] = false;
}
į
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
pradžią. Turi gautis:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        if(PDS[playerid])
        {
                FixGuiInputtedText(inputtext, strlen(inputtext));
                PDS[playerid] = false;
        }
        // Jūsų GUI langai
        return 1;
}
Skripto trūkumas:
  • Skriptas tikrina visų GUI langų, kuriu tipas DIALOG_STYLE_INPUT arba DIALOG_STYLE_PASSWORD, įrašytą tekstą - dažniausiai to nereikia, todėl siūlau alternatyvą:
    stock j_ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[], bool:check = false)
    {
            ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
            if(check) PDS[playerid] = true;
            return 1;
    }
    #define ShowPlayerDialog j_ShowPlayerDialog
    - veikimo principas - analogiškas, bet tikrins tik tuos GUI langus, kurie bus sukurti su true reikšme gale:
    ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2, true);

Autorius: Aš (ES.^ a.k.a Johurt).

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3215 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...