![]() |
Never mind, i used variables instead of flags now (thanks to Magic for showing me an info post).
This works fine now :) Also, I have an advance map related question, mind if I ask that too? If yes, here it is, else I'll remove it in a bit Quote:
Do you have steam? It's easier to talk there :D |
Thanks for the tut & for still being around. Anyway I ran into an error, I wanted to make a new trainer battle & have him give u a badge & item then move. Then when I tried to debug it I got this error
Quote:
Anyway here is the script can you/some1 else help me fix it: Spoiler:
|
Quote:
From what I can see, it looks like an NPC will give them player an item, so... Code:
|
Quote:
Thanks for the help man. That worked now it works [from what I see. Im not insert it in my rom yet]. |
I'm sorry if this is the wrong thread, but here it goes...
I'm having problems with the script boxes (you step on the tile and the script happens). The script (let's call script X) happens with no problems whatsoever in a building, if I put a level script (script Y). But where there isn't any level script (no script Y), such as cities, when stepping on the tile with the script X, one of the two things happen: 1. The game freezes 2. The script doesn't happen I've followed the tutorial in levelscripts according to the ones in pokecommunity. My question is, how to make scripts work without using level scripts? I think the problem is with setvar, but if you could give me some kind of tutorial, I would be more than happy. Thanks in advance ;) |
I'm wondering how in the intro for fire red, how i can start off in the home town and make a battle script where the player losses and then after that it fades into another scene in a lab where some story occurs. Then the player walks out [to be clear I wanted to have the player sprite to be hidden then show up when it needs to. Do I need to have the hide sprite near the beginning of the script then have the show sprite later when i want it?].
Now is there something different that needs to happen in the beginning battle script for the player to lose so all that intro story can only happen once. And how can the hero sprites appear at the right time and be the right gender. Im asking this bc like in R/E/S when u pick brandon and may is your rival. I wanted to make the same script so when u pick a gender the story is played as that hero and the other 1 is a rival. I would like to know how that works. Is there something else adding so the Ow sprite and trainer sprite is changed when 1 gender is picked. |
Total noob here. I cleared out the memory of FR using an external tool. It's supposed to delete all non-essential memory so you can start from scratch on a game and only have the original maps as a reference.
The only problem I've ran into so far is that when I lose a battle, I warp to some weird-ass building and I'm stuck walking around a closed off room. I think it's the top left corner of Safron's gym. I launched the unedited FR and tested what what happen if I lost. I warped back to what appeared to be the "mom's" house as a death point. What she said didn't match up with anything in the original FR scrips, so I'm very confused and don't have a reference to even see what makes you warp there upon losing a battle. How do I get this back in my hacked ROM, or set another death point? |
Hi. In a lot of pokemon games (such as firered) Your rival just walks up to you and has a battle if you step on a certain spot. How would a script like this look? Could you give me an example of one?
|
Hey, I've been wondering, I saw a tutorial on Youtube about a year ago, where you could basiclly change the sprite of the hero
The video has been deleted though The video was on PokeScript, no ASM required, FireRed as base and it was on a script tile He switched from Red to a Rocket Grunt The Youtuber was PurpleSonik418 Even if you don't know how to do it, it would be great if you had a Rom base with that Wiht would truly make my day |
Hey i really loved your tutorial. Because of your tutorial one of my friend is now good in scripting. I have also read your tutorial it helped me a lot really thank you.
|
Much I am really, really new to scripting as well to this whole hacking thing. Much your script tutorial helps and all. There some things I don't quite understand : / Now not sure if this has been explained or not...
For example exactly how do you insert, the script codes. Into Advancemap 1.92 onto like say a Sprite? Like a NPC who will give a regular message or statement...How will I be able to insert it into the game? Cause after putting the script in...and then reopen the NPC script...it disappears. Am I doing something wrong [and sorry, I don't know how to take screen shots off from desktop : / ] |
Quote:
|
Ah thank you very kindly destinedjagold ^ ^
|
This should be stickied.
Great tutorial - I love it! Very helpful indeed. |
Very helpful indeed. IO have scripted a battle with mew in pallet town as a test, it all worked except when I caught the mew it didn't obey me.
Is there a code for an obeying mew? |
Thanks for the tutorial, very useful however i am getting a problem and i have no idea why
This is my script before compilation: Code:
Code:
Then, after saving, i run it in virtual boy advance and go to the guy and when clicked it plays the sound *tinkle* then nothing happens and the guy continues walking. I can't see a problem, please help. Thanks Programs: AdvanceMap XSE FSF |
Thanks so much for this!
However, I have a problem. I'm not sure if anybody else who has posted above me has posted this question and/or had it answered, but here it is. It doesn't let me script Warps. As this is my first post, I can't post links yet, but it is" i m g u r . c o m / z p m e Y C i (without any spaces.) |
Quote:
Spoiler:
It worked fine for me, remember to copy paste the offset you get for @start Quote:
|
@Fae Bladez
~ It talks about coding the Warps. (In the example, he used warp 0x3 0x0 0x2 0x0 0x0) - I don't know where to code that. EDIT: Also, Advance Map also doesn't let me show a trainer for a trainer battle. I can't figure out why... |
Quote:
|
Quote:
~ BTW - I meant like on Advance Map, I have a trainer there with the XSE stuff, but when I open up the game, none of the people on that page show up (Except Poké Balls that I inputted) |
Quote:
|
Quote:
Also, no trainers there can be seen except Poké Balls. ~ What Trainers ID do I put? |
Quote:
|
Quote:
|
Quote:
|
Quote:
Trainer: 00 Person ID: 0000 Which one do I put it in? I notice that all the gym leaders have neither... they have 00(00) for both. EDIT: I put the PET 001 in the script itself. |
Quote:
|
Quote:
~ As I said before, none of the gym leaders have their ID there...or the trainers. |
Quote:
|
Quote:
So, back to my original question about the warps. |
Can you please help me? I'm new at this, I am trying to write a trainer script, i can do the battle just fine, but i'm wanting to make it a rival so that when i win they say something witty and disappear, i find with this script i have to talk to them after the battle to get them to walk away, and they keep reappearing too..Would you please tell me what i did wrong?
#dyn 0x740000 #org @begin trainerbattle 0x0 0x004 0x0 @intro @defeat message @afterwards callstd msg_NOCLOSE closemsg applymovement 0x4 @walkaway end #org @intro = I'm Ready to fight! #org @defeat = Darn, You won[.] #org @afterwards = I can also say something after \nthe battle #org @walkaway m walk_up walk_up walk_up walk_left walk_left walk_left walk_left walk_left walk_left walk_left walk_left walk_up walk_up walk_up walk_up walk_up end |
Quote:
Like in Diego's example script for a Gym Leader: Code:
Quote:
|
Hey great tutorial it is really helping me out. I have come across a problem though and don't know how to rectify it. Basically I have a script where a girl walks up to the player, talks and gives player a pokemon. She then walks back off screen. The problem is, when you walk the way she went, you can see her sprite standing there (standing where it originally walked from)
I want that sprite/person event to disappear after she walks off screen. Like the prof oak follow me script; his sprite isn't there until he gets you to follow him but you can see his person event in advance map. Thank you. I have also tried hidesprite 0Xx and hidesprite 0x800F. |
Quote:
|
Thank you it worked :) I just have another problem, I can't edit a script I have already compiled. Every time I try to re-compile the script it keeps reverting to the unchanged version.
|
Quote:
|
i did what it showed. And got this as a response tinyurl . com/ l9kmskz
my script was #dyn 0x740000 #org @begin lock faceplayer checkflag 0x220 if 0x1 goto @done msgbox @2 0x4 trainerbattle 0x1 0x004 0x0 @before @after @later end #org @before = Hina: Here we go are you ready?! #org @after = Hina: Ngh You win... #org @later Msgbox @3 0x4 applymovement 0x4 @walkaway setflag 0x220 release end #org @done msgbox @1 0x4 release end #org @1 = Why can you see me? #org @2 = Hina: Are you ready to \nfight me. #org @3 = You won. This will be \nthe only time you do. #org @walkaway m walk_up walk_up walk_up walk_up walk_up walk_up walk_up walk_up walk_up walk_left walk_left walk_left walk_left walk_left walk_left walk_up walk_up walk_up walk_up end |
Phone posting! Pew pew. There's nothing obvious wrong with your script, did you edit it at all after compiling?
Are you using a green event script tile for this? May be the problem. Maybe. |
no i was not, i restarted my computer and openeed it and it worked. do you have any idea where i would put the hidesprite in that?
|
but it did it again after the battle....
|
...
Applymovement Waitmovement 0x0 Setflag 0x220 Hidesprite 0x ... Also on that @done section change the msgbox number to 0x6 - 0x4 will mean it is stuck open. |
Okay thank you very much for your help. I really appreciate it!
|
Quote:
|
Quote:
Warp Number = The number of the purple tile you are warping too (says it on the event tab) warp 0xBANK 0xMAPNO 0xWARPNO 0x0 0x0 warp 0xBANK 0xMAPNO 0xFF 0xXCOORD 0xYCOORD |
Hello guys. I'm quite a newbie to scripting. Anyways, I tried to make Mega Evolutions for my game and I ended up with this:
#dynamic EB0B20 #org @megabattle trainerbattle 0x0 0x001 0x0 @before @after msgbox @beaten 0x6 release end #org @before = Go, my POKeMON, prove yourselves! goto @megavenusaur #org @after = Noo! My POKeMON have failed me! special 0x18 compare LASTERSUT 0x19b if 0x1 goto @megareverse setvar 0x8005 0x0 #org @beaten = You have inspired me. I will train/nmore and try to become like you. #org @megavenusaur special 0x18 compare LASTRESULT 0x3 if 0x1 goto @megastonecheck end #org @megastonecheck special 0xe compare LASTRESULT 0x62 if 0x1 goto @megaevolve end #org @megaevolve setvar 0x8005 0x19b special 0x16 end #org @megareverse setvar 0x8005 0x3 special 0x16 end This however doesn't work. It doesn't display the correct text - some random characters before the battle and the before pointer message displays right after the battle. My Venusaur doesn't evolve into Mega Venusaur (0x19b, replaced Chimeco), even though it is holding the leaf stone (0x62). Please help, and thank you in advance. P.S. I am using JPAN's Fire Red Hacked Engine, thats why there are some specials. |
That's because your script is... Impossible. The two pointers in the trainer battle 0x0 command can ONLY point to text, all the rest of your script will never happen.
Have a look at the trainerbattle 0x1 command (also in this thread). Also please make sure that your message pointers only point to message. They don't even need a 'goto' - your @beaten is the only message you've done correctly. |
I need help... I'm trying to make scripts in Fire red, but every time I add one, and I walk into the script, the game just crashes. I have no idea what I'm doing wrong. (I'm a noob to scripting, however)
This is a short script I wrote just to paste here: Spoiler:
|
LASTRESULT doesn't do work. It's telling me to define something.
|
Quote:
|
Quote:
|
Quote:
Not sure what happened here... if LASTRESULT doesn't work use 0x800D in its place. Quote:
|
Quote:
|
Having trouble making giveitem commands. I'm getting "Error 13 Type Mismatch on line 29. Missing #define." Here's what I have. Line 29 is the first giveitem command.
#dynamic 0x304F18 #org @essentials lock faceplayer checkflag 0x1200 if 0x1 goto @done msgbox @message1 0x5 compare 0x800D 0x1 if 0x1 goto @take msgbox @message3 0x6 release end #org @take setflag 0x807 setflag 0x808 setflag 0x809 setflag 0x80A setflag 0x80B setflag 0x80C setflag 0x80D setflag 0x80E setflag 0x800 setflag 0x801 setflag 0x860 givepokemon 0x97 0x64 0x0 0x0 0x0 0x0 givepokemon 0x97 0x64 0x0 0x0 0x0 0x0 giveitem 0x153 0x1 MSG_OBTAIN giveitem 0x154 0x1 MSG_OBTAIN giveitem 0x155 0x1 MSG_OBTAIN giveitem 0x156 0x1 MSG_OBTAIN giveitem 0x157 0x1 MSG_OBTAIN giveitem 0x158 0x1 MSG_OBTAIN giveitem 0x159 0x1 MSG_OBTAIN giveitem 0x15A 0x1 MSG_OBTAIN msgbox @message4 0x6 setflag 0x1200 release end #org @done msgbox @message2 0x6 release end #org @message4 = All set! #org @message2 = Good luck! #org @message1 = Want some testing essentials? #org @message3 = ...really? Well, destinedjagold provided me a different version of XSE it fixed the problem. Dunno what caused it or why this one fixed it, but yay. |
Having another problem. For some reason, the script doesn't move the sprites in-game (This is a script tile) (I am 100% sure they are the same event no. as in the script) The script will only show the messages and the players movements.
Here's the script I composed (after compiling it and re-opening it): Spoiler:
|
I've had problems before with move sprite not working for sprites that are far away. Judging by the large numbers you're using, this might be the case here?
|
Once again, you helped me. They actually were too far away. Thank you sincerely, I guess you're just magic, huh. :P
|
Hi. How exactly do I insert the script into Pokémon Leaf Green?
|
A question.
Why is it that whenever I put in a script using Advanced Map, it changes everything I put in into this format: Spoiler:
I'm a Newbie, a very unexprienced pathetic newbie, So these kind of things confuse me D: Besides that, Is there anywhere I could learn everything from the very beginning? |
Quote:
Anyway, here's a tutorial for newbies: http://www.pokecommunity.com/showthread.php?t=185188 |
Quote:
Another question, are there any lists for the RSE songs? They don't show up in the headers in Advance Map like FRLG... |
#org 0x8007A6
playsong 0x11A 0x0 applymovement 0x3 0x8800769 applymovement MOVE_PLAYER 0x8800775 waitmovement 0xFF waitmovement 0x3 msgbox 0x88006CF MSG_NORMAL '"Hi im professor ***** but i'm not\..." applymovement 0x3 0x880078E waitmovement 0x3 hidesprite 0x3 setvar 0x2000 0x1 setflag 0x1206 fadesong 0x12C release end '--------- ' Strings '--------- #org 0x8006CF = Hi im professor ***** but i'm not\none lol. Welcome to my\lvillage this is where i study...\lAnyway i'm meant to give you your\lfirst pokemon so follow me! '----------- ' Movements '----------- #org 0x800769 #raw 0x09 'Step Up (Normal) #raw 0x09 'Step Up (Normal) #raw 0x09 'Step Up (Normal) #raw 0x09 'Step Up (Normal) #raw 0x09 'Step Up (Normal) #raw 0x0A 'Step Left (Normal) #raw 0x0A 'Step Left (Normal) #raw 0x0A 'Step Left (Normal) #raw 0x0A 'Step Left (Normal) #raw 0x0A 'Step Left (Normal) #raw 0x4A 'Jump in Place (Facing Down/Up) #org 0x800775 #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x09 'Step Up (Normal) #raw 0xFE 'End of Movements #org 0x80078E #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x08 'Step Down (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x0B 'Step Right (Normal) #raw 0x09 'Step Up (Normal) #raw 0xFE 'End of Movements Hey guys this is an event i have created i have a problem with it though... When i step on the script tile the event does not activate at all the game just continues can someone please tell me how to fix, thanks... oh btw it's for pokemon RUBY |
Quote:
HTML Code:
Spoiler:
|
Sorry where do i put the code command im really new to this. this is my first movement script as well so i don't really know what to do i put the script on both the actual script
event and the player as well on advance map is that what im meant to do... il take a screenshot if you want, thanks |
Quote:
Anyway, your script is the green script tile on Advance Map, right? If so, then click on that tile and put the values I showed on the screenshot that I posted on my previous post. ;) |
Yep, do i do that for both the person script and the actual script tile and yes it is the green script tile il take a screenshot of advance map if you want... Oh and sorry if im wasting your time im just really desperate i've been trying to hard to get this to work
|
Quote:
Code:
Code:
Code:
|
Ohh thanks for the values it actually set off my event which im extremely happy about :) before i just walked over the tile and nothign happened at all no game freeze at all much appreciated! :D. Anyway, my script is totally wrong in so many ways basically what im trying to do is when i hop out of the truck like the original event on pokemon ruby when your mum says stuff, but instead professor birch greets me and takes me to his lab where i get to choose my first pokemon. Sorry for my bad grammar btw. :P
Pretty much like the Professor oak thing when you leave the town if you know what i mean on Fire Red |
Hello the message box don't pop up...
This is my script: #dynamic 0x800000 #org @start lock faceplayer msgbox @talk1 0x6 release end #org @talk1 = Heey Tom!\nHet is gelukt\pHier vind je alle andere starters! |
Im getting " error 13 type mismatch on line 7. missing #define".
whats this? I'm trying to use pokemon giveaway script |
Quote:
|
Quote:
|
Can some one help me?
My script don't work. i have no idee what is wrong: #dynamic 0x800000 #org @start lock faceplayer msgbox @talk1 0x6 release end #org @talk1 = Heey Tom!\nHet is gelukt\pHier vind je alle andere starters! |
Quote:
I think in the newer versions it'd be: msgbox @talk callstd 0x6 I'm not sure, maybe they're both fine :o |
i have a other one...
have a pokeball but get a hypno lvl 37 i want a Poliwhirl lvl 25 and i want a waterstone get a wepear berry... this is my script: #dynamic 0x800015 #org @start hidesprite 6 msgbox @talk1 boxset 6 fanfare 0x13e givepokemon 0x61 0x25 0x97 0x0 0x0 0x0 waitfanfare setflag 0x1251 release end #org @talk1 = \v\h01 krijgt een Poliwhirl nevermind |
--SOLVED!--
Hello :D I'd just like to ask something reaaaally quick since I'm tired and I'm about to go to sleep. So I was waddling in the internet when I got the bright idea of making my pokemon game (which I tried 100 times before but they all ended up in failures...), so I started scripting with XSE thinking it was super easy, and.... nothing worked. It's pretty much like this: I follow all of the instructions in this tutorial, and I even sometimes copy and paste some scripts to test my problem, but naww, once I save and go test the game out, all of the person events simply just "beep" and do absolutely nothing :) This is a great tutorial but my IQ must be way too low to understand how my GODDA-- my treacherous Advance Map and XSE fail to... well, script...? I use the latest Advance map (duh), Pokemon Emerald, and... what more? Well I just copy pasted the basic message box script from this tutorial to the game and it still just bleeps. Yes, I compiled and everything blah bluh bleh, But something isn't working. If anyone can help, I appreciate you for your assistance even if it might not solve the problem. Thank you! PS: Memento, failing in everything since 199... wait what? *EDIT after almsot closing the web page and going to sleep* And yes, I do know I should've gone to the other pages and F3 for people that have the same problems and not make more trouble posts that have been answered, but c'mon, I'm lazy AND sleepy. There's no worse combination. I did google but since ROM hacking isn't mainstream, google flipped me away and now I'm here. Thank you. Now, if I could get some sleep I'd be really happy... ... SECOND EDIT: I found the problem. Somehow my XSE was ****ing it up so I changed into the version... 1.11 I believe? I had 1.0.0 so if it's not working for someone and you're using Advance Map 1.92, try this. Heads up for Flareon destiny gold or whatever his name was for the help :D This message can be deleted, I'm just leaving it here so if someone comes on and reads this, it might help them. |
Quote:
#dynamic 0x800000 #org @script lock faceplayer msgbox @tekst boxset 6 release end #org @tekst = Tekst |
Quote:
Because every damn tutorial forgot to mention that and I wasted my time for days -.-" |
The last line says to compile :(
|
Is there any script to check only first Pokemon in the party?
|
Quote:
Press F1 in XSE for more scripting commands. |
Quote:
|
I want to give decorations in an event in Sapphire, and found out that the right command is giveitem3. Does anyone have a list of the Ruby/Sapphire decoration numbers?
|
Can Anyone Tell me How to use Check Flag.I have read Tutorail so much time but it didnt work out plz help me
|
@Snorlax44: It's similar to a question. If the flag has been set in a past script with setflag 0x##, then you can jump to a different text string using if 0x1 goto @yesflag. If you have not set the flag, then it'll go directly down the line and go to a different pointer. Then you end it like all other scripts.
|
Quote:
Quote:
|
is this script has fault
#dynamic 0x800000 #org @start msgbox @hello 0x2 end #org @hello = not working if not then why it is not working |
Quote:
This script is fine. I just checked it. The problem might be XSE. What version do you have? |
My Version is 1.0(If it is outdated link me a latest version)
|
Quote:
Yeah your version is outdated. Here's the newest version: http://www.mediafire.com/download/8qe70zzp45bjf91/Unofficial_XSE.zip |
Quote:
|
Quote:
|
I've been working on a hack, and this tutorial has been very helpful, but whenever I try to make a
checkflag script that checks for a badge, it either switches to another script I've written for another NPC, or it just freezes my character, with the game still running. Help anyone? Here's my script: #dynamic 0x800500 #org @start checkflag 0x820 if 0x1 goto @pass msgbox @prints 0x6 applymovement 0xff @move end #org @pass msgbox @ok 0x6 end #org @prints = Wait! Don't step on those\nfootprints! I'm inspecting them.\lYou can come back after I'm done! #org @move #raw 0x10 #raw 0xfe #org @ok = I'm all done. Turns out they were my own footprints. Hehe... Thanks in advance. |
Quote:
|
Quote:
|
Quote:
#dynamic 0x800500 #org @start lock faceplayer checkflag 0x820 if 0x1 goto @pass msgbox @prints 0x6 applymovement 0xff @move waitmovement 0x0 end #org @pass msgbox @ok 0x6 release end #org @prints = Wait! Don't step on those\nfootprints! I'm inspecting them.\lYou can come back after I'm done! #org @move #raw 0x10 #raw 0xfe #org @ok = I'm all done. Turns out they were my own footprints. Hehe... Just a simple missing waitmovement the lock and faceplayer are optional however. As Blaziken XY said, never write a script to the same offset twice or else you corrupt the data! Make sure your green scripting tile is set too this: Unknown: 0300 Var Number: 4050 ~Eclipse |
Quote:
But do I need to put the 'Unknown' to 0300 and 'Var Number' to 4050 everytime I make a similar script to this? |
Quote:
~Eclipse |
I have to say it, this is a badass tutorial! Thank you for your hard work!
|
Thank you for this awesome and really helpful Tutorial ! :D
|
| All times are GMT -8. The time now is 8:11 PM. |
![]()
© 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.
Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.