Szerző Téma: Automata reklám script készítése  (Megtekintve 5028 alkalommal)

Automata reklám script készítése
« Dátum: 2011. Március 28. - 17:52:49 »
+3
Bevezetõ
Hello!Azért írom ezt a leírást,mert páran már kértek ilyen témában segítséget MSN-en,így könyebb lesz ezt belinkelni.  :)
A kód indentáció barát,mivel nem a fordítóban írtam,szóval elõfordulhatnak kisebb hibák is.
A színeket ne felejtsük el lecserélni.
Elmélet
Elõször is szükségünk lesz 3 darab változóra.Az egyik a timer ID-t fogja jelölni,a másik meg az aktuális reklámot,a harmadik meg egy tömb lesz,amiben a reklámokat helyezzük el. Meg természetesen egy prototípus is kell,az idõzítõé.
A színeket ne felejtsük el lecserélni!
Indítanunk kell egy idõzítõt (timert) ami ki fogja írni a reklámokat.
Irassuk ki a megfelelõ szöveget.
Az idõzítõt a script végén le kell állítanunk.
Gyakorlat
Készítsük el a változóinkat.A \' c \' betû az egomat jelöli.
 

forward cReklamozas(); //Az idõzítõ prototípusa
new cTimer; //Ez lesz a timer ID-je
new cReklamStatus = -1; //Ez az aktuális reklám ID-je
new cReklam[][] =
{
\"Pulyka nem Tyúk húsleves csak 40 000 Ft. a LIDL-ben!\",
\"Akciós FA termékeink: Rozsdamentes acél házikó,most csak 200 000 000 000 000 Ft!\",
\"Csodálatos STRAND helyek kiadók!Érdeklõdnia CÁPA VESZÉLY-t jelzõ tábla mellet a bódéban!\"
}

 
Figyeljük meg,hogy a felsorolás utolsó szövegének végére nem kell , (vesszõ)
Ezután,Indítsuk el a Timert.
FilterScript:
 

public OnFilterScriptInit()
{
cTimer = SetTimer(\"cReklamozas\",60*1000,true); //Az idõzítõ 60*1 másodpercenként fut le,azaz 1 percenként.
return 1;
}

 
GameMode:
 

public OnGameModeInit()
{
SetTimer(\"cReklamozas\",60*1000,true); //Az idõzítõ 60*1 másodpercenként fut le,azaz 1 percenként.
return 1;
}

 
Hozzuk létre magát az idõzítõt:
 

public cReklamozas()
{
   if(cReklamStatus >= sizeof(cReklam) - 1)
      cReklamStatus = 0;
   else cReklamStatus++;
   return SendClientMessageToAll(0,cReklam[cReklamStatus]);
}

 
Végül,ha a kód futatása véget ér,le kell lõnünk az idõzítõt:
 

public OnFilterScriptExit()
{
KillTimer(cTimer);
return 1;
}

 
Kész is
 

#include <a_samp>
forward cReklamozas(); //Az idõzítõ prototípusa
new cTimer; //Ez lesz a timer ID-je
new cReklamStatus = -1; //Ez az aktuális reklám ID-je
new cReklam[][] =
{
    \"Pulyka nem Tyúk húsleves csak 40 000 Ft. a LIDL-ben!\",
    \"Akciós FA termékeink: Rozsdamentes acél házikó,most csak 200 000 000 000 000 Ft!\",
    \"Csodálatos STRAND helyek kiadók!Érdeklõdnia CÁPA VESZÉLY-t jelzõ tábla mellet a bódéban!\"
};
public OnFilterScriptInit()
{
cTimer = SetTimer(\"cReklamozas\",60*1000,true); //Az idõzítõ 60*1 másodpercenként fut le,azaz 1 percenként.
return 1;
}
public cReklamozas()
{
   if(cReklamStatus >= sizeof(cReklam) - 1)
      cReklamStatus = 0;
   else cReklamStatus++;
   return SendClientMessageToAll(0,cReklam[cReklamStatus]);
}
public OnFilterScriptExit()
{
KillTimer(cTimer);
return 1;
}

 
Végül
Ennyi,a leírás csakis elméleti,mivel nem teszteltem le a gyakorlatban, nem tudom mûködik-e.(Fórumban írtam)
Hozzáadhatunk vagy elvehetünk híreket,semmi mást nem kell módosítani,viszont az utolsó hír után nem kell vesszõ,a többi után igen.
« Utoljára szerkesztve: 2011. Március 28. - 22:01:15 írta ChuckNorris »

Automata reklám script készítése
« Válasz #1 Dátum: 2011. Március 28. - 19:34:33 »
0
Idézetet írta: ChuckNorris date=1301327569\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7173\" data-ipsquote-contentclass=\"forums_Topic
Ennyi,a leírás csakis elméleti,mivel nem teszteltem le a gyakorlatban, nem tudom mûködik-e.(Fórumban írtam)
Hozzáadhatunk vagy elvehetünk híreket,semmi mást nem kell módosítani,viszont az utolsó hír után nem kell vesszõ,a többi után igen.
 
Építõ jellegû kritika következik:
A leírás szép és jó de ha van annyi idõd hogy elkészíts egy ilyen leírást akkor legalább mûködõképes formában tennéd.
Nekem volt pár percem letesztelni és már elsõ ránézésre is a léptetés funkció hibás.
Ugye 3 darab hirdetés van aminek az indexe 0, 1, és 2.
A sizeof érték darabszámot ad vissza ami 3 ebben az esetben.
 

new cReklam[][] =
{
   \"Pulyka nem Tyúk húsleves csak 40 000 Ft. a LIDL-ben!\", // index: 0
   \"Akciós FA termékeink: Rozsdamentes acél házikó,most csak 200 000 000 000 000 Ft!\", // index: 1
   \"Csodálatos STRAND helyek kiadók!Érdeklõdnia CÁPA VESZÉLY-t jelzõ tábla mellet a bódéban!\" // index: 2
};
printf(\"sizeof érték: %d\", sizeof(cReklam));
// eredmény: sizeof érték: 3

 
És most jön a léptetésre írt kód:
Ugye csak 0 1 2 indexen szerepel hirdetés tehát már eleve 2-nél nagyobb értéke nem lehet az indexként használt \"cReklamStatus\" változónak.
 

if(cReklamStatus > sizeof(cReklam))  // index nagyobb-e mint 3

 
Itt viszont azt vizsgálod hogy az indexként használt cReklamStatus értéke nagyobb-e mint 3 (ugye sizeof érték), de 3 se lehet, 3 darab hirdetés esetében, mert az indexelés 0-val kezdõdik.
Persze azt gondolná az ember hogy akkor egyszerû a megoldás.
Nem 3 ra kell vizsgálni hanem egyel kisebbre hogy ne legyen 2-nél nagyobb
 

if(cReklamStatus > sizeof(cReklam) - 1)  // index nagyobb-e mint 2

 
De te tovább nézve a dolgot így oldottad meg:
 

if(cReklamStatus > sizeof(cReklam) - 1)
cReklamStatus = 0;
else cReklamStatus++;

 
Most akkor azt gondolnánk helyesen tettük hogy azt vizsgáljuk nagyobb-e mint 2 az indexünk \"cReklamStatus\"
Mivan akkor ha az indexünk értéke 2?
Persze 2 nem nagyobb mint 2, így jön az else utáni rész, amivel máris megnöveltük az értékét 3-ra, amit szeretnénk elkerülni.
Szerintem elég lesz ennyi ha elolvasom lehet én se értem amit leírtam, kijavítottam a funkciót íme:
 

public cReklamozas()
{
   if(cReklamStatus >= sizeof(cReklam) - 1)
      cReklamStatus = 0;
   else cReklamStatus++;
   return SendClientMessageToAll(0,cReklam[cReklamStatus]);
}

 
Szándékosan nem írtam át másmilyen logikai menetre, maradjon az általad elképzelt folyamat.
Viszont a reklám szövegeken jót nevettem.  :D

Automata reklám script készítése
« Válasz #2 Dátum: 2011. Március 28. - 22:00:20 »
0
Igazad van.
( Az idõrõl annyit,hogy ez nagyon nem mai leírás,csak selejtezés közben megtaláltam és kiraktam :) )
Kijavítom a kódot,mondjuk ez nagyon alap szintû reklám szkript,lehet még cifrázni stb...

Nem elérhető Popec16

  • 1267
    • Profil megtekintése
Automata reklám script készítése
« Válasz #3 Dátum: 2011. Március 30. - 21:40:12 »
0
Idézetet írta: ChuckNorris date=1301342420\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7173\" data-ipsquote-contentclass=\"forums_Topic
Igazad van.
( Az idõrõl annyit,hogy ez nagyon nem mai leírás,csak selejtezés közben megtaláltam és kiraktam :) )
Kijavítom a kódot,mondjuk ez nagyon alap szintû reklám szkript,lehet még cifrázni stb...
 
Ne cifrázd nagyon túl se , ezeket úgyis kezdõk szokták olvasni , akik szerintem egy egyszerû példán szebben eligazodnak mint egy bonyolultabban!
Szép leírás Grat!

Nem elérhető Eles

Automata reklám script készítése
« Válasz #4 Dátum: 2012. Október 06. - 14:25:16 »
0
A leírásban így írtad
new cReklam[][] =
{
\"Pulyka nem Tyúk húsleves csak 40 000 Ft. a LIDL-ben!\",
\"Akciós FA termékeink: Rozsdamentes acél házikó,most csak 200 000 000 000 000 Ft!\",
\"Csodálatos STRAND helyek kiadók!Érdeklõdnia CÁPA VESZÉLY-t jelzõ tábla mellet a bódéban!\"
}
Az utolsó kapcsos zárójelet pedig így kellene:    };
Csak azok kedvéért írnám akik nem jöttek rá!

Automata reklám script készítése
« Válasz #5 Dátum: 2012. Október 14. - 14:00:40 »
0
Nekem sikerült, de az a kérdésem lenne, hogy, hogy lehetne átállítani hogy ne feketével írjon?
Mert nem lehet látni a szerveren  :D

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Automata reklám script készítése
« Válasz #6 Dátum: 2012. Október 14. - 15:57:29 »
0
Adol neki más szín pl: ~g~ ez zöld mert angolul green vagyis így lesz:
 

new cReklam[][] =
{
  \"~g~Pulyka nem Tyúk húsleves csak 40 000 Ft. a LIDL-ben!\", // index: 0
   \"~g~Akciós FA termékeink: Rozsdamentes acél házikó,most csak 200 000 000 000 000 Ft!\", // index: 1
   \"~g~Csodálatos STRAND helyek kiadók!Érdeklõdnia CÁPA VESZÉLY-t jelzõ tábla mellet a bódéban!\" // index: 2
};

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Automata reklám script készítése
« Válasz #7 Dátum: 2012. Október 14. - 19:02:27 »
0
De ez SendClientMessage, és nem GameText...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal