Jump to content
GT222

pomoc Zrušení publicu z GM v FS

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Diky za pomoc, hold to tam nechám nebo to budu překrývat vlastním textem se stejným timerem když to jinak nejde..

Share this post


Link to post
Share on other sites

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

  • Líbí se mi to! (+1) 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.
 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

no moc na výběr nemáš. Jelikož to nemáš v samostatném timeru tak stím asi nic neuděláš.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

×