Jump to content
  • 0

pomoc Zrušení publicu z GM v FS


GT222

Dotaz

Ahoj měl bych takový menší problém, mám jeden mód který se odehrává v Las Venturas vše je vpořádku jen je problém že mam pouze amx toho módu.
Potřeboval bych zrušit přes FS jeden public aby se již nevyvolával , jedná se o public, kde to píše každých 5 min text TEST123 a to mi celkem vadí.
AMX jsem deamxnul a zjistil jsem název publicu

 

public DispText(playerid, arg1)
{
    switch(arg1) {
        case 1:
            SCMS(playerid, 0xFF0000AA, "Test123");
        case 2:
            SCMS(playerid, 0xFF0000AA, "Test123.");
    }
    return 0;
}

 

-

Zkoušel jsem ten public nahradit na vlastní Text:

v FS:

stock DispText(playerid, value)
{
    return CallRemoteFunction("DispText", "ii", playerid, value);
}

forward DispText(playerid, value);
public DispText(playerid, value)
{

    //Text
    return 1;
}

 

Jenže to hází errory a když to šlo vykompilovat tak to většinou nefungovalo.

 

Koukal jsem a tento public se nevyvoláva z jednoho SetTimeru ale z toho kde je víc věcí jako je loterie , info apod.. je to mezi tím jedním timerem a ten kdybych nějak killnul tak by mi nešli tyto věci , tak bych spíš potřeboval poradit jak mam udělat abych ten timer DispText nahradil na svůj text.

 

Předem mockrát děkuji.

Link to comment
Share on other sites

23 odpovědí na tuto otázku

Recommended Posts

  • 0

To ti za to tak stojí? :-D

To bych sem asi nepsal o pomoc :d , já se ptám pouze jestli nevíte jak by se to dalo udělat, a ne jestli to za to stojí :d

 

Tak keď už si to deamxnul tak si to odtial proste zmaž a znova prelož nie?

Vubec nevim jak to myslíš :) jako že to mam smazat a celý vzít? Je toho fakt hodně a já nechci ani ten mod v pwn , spíš mi jde o ten text abych přepsal ten public nebo nějak ho dostal pryč , pouze toto bych potřeboval vědět :) předem díky..

Link to comment
Share on other sites

  • 0

Mě lépe řečeno spíš zajímá oč se jedná a jestli se ti to tu nechce psát můžeš mi napsat na skype mám ho na profilu či v popisku (jestli to není třeba něco z netu od čeho bych měl .pwn).

Edited by rEf
Link to comment
Share on other sites

  • 0

Mě lépe řečeno spíš zajímá oč se jedná a jestli se ti to tu nechce psát můžeš mi napsat na skype mám ho na profilu či v popisku (jestli to není třeba něco z netu od čeho bych měl .pwn).

Jedná se o to že v GameModu je nastavený public který se vyvolává každých 5 minut , s textem Test123 a já potřebuji ve FilterScriptu udělat funkci která ten public nejlépe zruší pomocí CallRemoteFunction , nebo alespoň nahradí za můj vlastní.

Tím myslím že místo aby to psalo každých 5 minut Test123 tak aby byl místo toho můj vlastní text nebo žádný , newim zda li se to dá udělat přes nějakou cenzuru že bych použil , ale to asi funguje jen pokud ten text píše hráč nikoli když je SendCLientMessage.. :)

Link to comment
Share on other sites

  • 0

Takto:

 - upravit GM pomocou FS sa NEDA bez pouzita nejakeho pluginu

 - zabranit odosielani SCM cez FS sa NEDA bez pouzitia nejakeho pluginu

Najlepsia volba pre teba je upravit amx modu, ak proti tomu nieje nejak chraneny. Vzhladom k tomu, ako zlozite to je a k tomu, ze ak nemas pwn, tak autor zrejme nechcel, aby si jeho mod upravoval (alebo vobec pouzival), ta to ucit nebudem.

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

  • 0

A co takhle využít stejný název public v .amx ve fs jako public a falsnout to. Ale celkově mi to přijde jako hloupost :-D By mě vážně zajímalo co to je za gamemode že kvůli němu musí podnikat takovou ohavnost jako úpravu přes fs.

Link to comment
Share on other sites

  • 0

Jako volani publicu se blokuje tezko, ale pokud to vola timer muzes si zjistit id timeru a ten killnout.

 

No vidíš to by mě nenapadlo a je to jediná jednoduchá věc :o

Link to comment
Share on other sites

  • 0
  • Administrátor

Ještě je jedna možnost.

Otevřít si AMX třeba v notepadu. A najít jméno toho publicu a změnit v něm písmeno třeba z DispText na DispTeet a udelat to i s forwardem od toho publicu. A ten timer bude volat do prázdna

Link to comment
Share on other sites

  • 0

Ještě je jedna možnost.

Otevřít si AMX třeba v notepadu. A najít jméno toho publicu a změnit v něm písmeno třeba z DispText na DispTeet a udelat to i s forwardem od toho publicu. A ten timer bude volat do prázdna

Forward je prazdny statement, do amx sa nekompiluje. Ale GT222 pisal, ze ten publiuc sa vola z vacsieho timeru, ktory nemoze vypnut, inak by stratil funkcionalitu. Ak sa teda nevola cez CallLocalFunction z nejakeho dovodu, tak menit meno publicu nijak nepomoze.

 

 

Koukal jsem a tento public se nevyvoláva z jednoho SetTimeru ale z toho kde je víc věcí jako je loterie , info apod.. je to mezi tím jedním timerem a ten kdybych nějak killnul tak by mi nešli tyto věci , tak bych spíš potřeboval poradit jak mam udělat abych ten timer DispText nahradil na svůj text.
 
Link to comment
Share on other sites

  • 0

ale kdyz bude mít public jméno Test21 a z timeru budeš volat Test22 ..

Ak to chapem spravne, tak on to ma takto:

 

 

public OnGameModeInit() {
    SetTimer("Public1", 5000);
    return 1;
}

public Public1() {
    DoleziteVeci();
    Public2();
    DoleziteVeci2();
}

public Public2() {
    OtravnaReklama();
}

Preto ked zmenis meno Public1, tak nebudu fungovat dolezite veci a ked zmenis Public2, tak sa nic nezmeni, lebo sa vola adresou ako bezna funkcia.

Link to comment
Share on other sites

  • 0
  • Administrátor

Ale ja nechci menit pulic 1 ale kdyz 

public OnGameModeInit() {
    SetTimer("Public1", 5000);
    return 1;
}

public Public1() {
    DoleziteVeci();
    Public2();
    DoleziteVeci2();
}

public Public3() {
    OtravnaReklama();
}

Tak se otravnareklama muze jit vysrat

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

  • 0

GameModeInit

SetTimer("TenSecond", 10000, true);

 

public TenSecond(playerid, arg1)
{

jine veci..

for(new var1 = 0; var1 < 64; var1++) 
        {
            if(Connected(var1))
            {
                DispText(var1, globE1550);
            }
        }
    }
    globE15... atd..

 

public DispText(playerid, arg1)
{

.... Text

 

nejak takto to tam je udělané

jinak vám moc děkuji

Link to comment
Share on other sites

  • 0

Ale ja nechci menit pulic 1 ale kdyz 

public OnGameModeInit() {
    SetTimer("Public1", 5000);
    return 1;
}

public Public1() {
    DoleziteVeci();
    Public2();
    DoleziteVeci2();
}

public Public3() {
    OtravnaReklama();
}

Tak se otravnareklama muze jit vysrat

Ocividne nevies ako funguje volanie funkcii v PAWN. Keby tam bolo CallLocalFunction, tak mas pravdu. Lenze compiler pri compilacii prelozi volanie Public2(); na neco ako call 0x00006487 (adresa). Takze zmenit meno publicu nestaci. PAWN ten public zavola priamo tak ako sa volaju trebars stocky.

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

  • 0

BTW adresu čeho ? 

Adresu tej funkcie. Vsetko v pawne ma svoju adresu, konkretne adresu toho, kde to je ulozene v ramke (relativne k zaciatku amx). Dokonca ak by si moc chcel by si mohol skakat na konkretne riadky, alebo aj dovnutra riadkov pomocou adries. Alebo ak si Y_Less a vidis priamo matrix, tak dokonca mozes funkcie za chodu prepisovat (on to pouziva napr. v y_hooks).

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