The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Emulation & ROM Hacking
Register New Account FAQ/Rules Chat Blogs Mark Forums Read

Notices

Emulation & ROM Hacking The center for the community emulation scene. Come and discuss all things emulation and develop your own hacks!



Reply
Thread Tools
  #4001  
Unread May 30th, 2010, 01:34 PM
metapod23's Avatar
metapod23
Hardened Trainer
 
Join Date: Mar 2009
Gender: Male
Nature: Timid
Quote:
Originally Posted by Metroid Die View Post
Alright, so after the third hidesprite command, the fourth doesn't work. The person event number is 10, so A in hex. I've used the exact same command, yet I fail to see what is wrong... I set the Person ID to 1003, just like the flag in the script.

Thanks in advance for any help.

Spoiler:

#dynamic 0x8033A1
#org @start
checkflag 0x828
if 0x1 goto @end
showpokepic 0x4 0x3 0x3
msgbox @char 0x5
compare 0x800D 0x1
if 0x0 goto @end
hidesprite 0x8
setflag 0x1000
givepokemon 0x4 0x5 0x0 0x0 0x0 0x0
fanfare 0x13E
hidepokepic
msgbox @rec 0x4
waitfanfare
closeonkeypress
msgbox @nick 0x5
compare 0x800D 0x1
if 0x1 gosub @name
closeonkeypress
applymovement 0xFF @play1
waitmovement 0xFF
applymovement 0x5 @redwood
waitmovement 0x5
applymovement 0x4 @james
waitmovement 0x4
msgbox @redwood2 0x2
applymovement 0x4 @james2
waitmovement 0x4
applymovement 0xFF @play2
waitmovement 0xFF
applymovement 0x4 @james3
waitmovement 0x4
applymovement 0xFF @play3
applymovement 0x5 @redwood3
applymovement 0x4 @james4
waitmovement 0x0
msgbox @james12 0x6
hidesprite 0x7
setflag 0x1001
applymovement 0x4 @james5
waitmovement 0x4
applymovement 0xFF @play4
applymovement 0x5 @redwood4
waitmovement 0x0
msgbox @redwood12 0x2
applymovement 0x5 @redwood5
waitmovement 0x5
hidesprite 0x9
setflag 0x1002
applymovement 0x5 @redwood6
waitmovement 0x5
hidesprite 0xA
setflag 0x1003

applymovement 0x5 @redwood7
waitmovement 0x5
setflag 0x828
end
#org @char
= [blue_fr]Redwood: So you choose the\nCharmander then? A worthy choice\lfor a worthy trainer!
#org @end
closeonkeypress
hidepokepic
end
#org @rec
= [player] received the Charmander!
#org @name
call 0x1A74EB
return
#org @nick
= Would you like to give a\nnickname to Charmander?
#org @play1
#raw 0x10
#raw 0x13
#raw 0x13
#raw 0x01
#raw 0xFE
#org @redwood
#raw 0x0
#raw 0xFE
#org @james
#raw 0x1
#raw 0xFE
#org @james2
#raw 0x10
#raw 0x12
#raw 0xFE
#org @play2
#raw 0x0
#raw 0xFE
#org @james3
#raw 0x12
#raw 0x11
#raw 0xFE
#org @play3
#raw 0x02
#raw 0xFE
#org @redwood3
#raw 0x02
#raw 0xFE
#org @james4
#raw 0x11
#raw 0x12
#raw 0x12
#raw 0x01
#raw 0xFE
#org @james5
#raw 0x10
#raw 0x13
#raw 0x13
#raw 0x01
#raw 0xFE
#org @redwood2
= [blue_fr]Redwood: Good choice! Now it's your\nturn James.
#org @james12
= [blue_fr]James: I'll pick the Mudkip then!
#org @play4
#raw 0x01
#raw 0xFE
#org @redwood4
#raw 0x00
#raw 0xFE
#org @redwood12
= [blue_fr]Redwood: Excellent! Ah yes, I have\none last thing to give to you two.
#org @redwood5
#raw 0x11
#raw 0x11
#raw 0x22
#raw 0xFE
#org @redwood6
#raw 0x13
#raw 0x22
#raw 0xFE
#org @redwood7
#raw 0x12
#raw 0x10
#raw 0x10
#raw 0xFE
Check to make sure no other sprites on you map have an event # of 10 - if so, change them to a different #. Try troubleshooting by changing the person event # to a lower #, or swapping event #'s with a less significant sprite. Try deleting and reinserting the sprite. Try a different person ID, like 1004 and see if that works.
__________________
Reply With Quote
  #4002  
Unread May 30th, 2010, 04:11 PM
Metroid Die
Beginning Trainer
 
Join Date: Mar 2009
Fixed it thanks guys.

Now I have more of a question than a problem. How do I activate the national Pokedex at the beginning of the game? I'm using a FireRed ROM. Is there a certain flag to use, or do I have to call a script etc...?

Thanks for the help so far
Reply With Quote
  #4003  
Unread May 30th, 2010, 04:15 PM
Zeffy's Avatar
Zeffy
 
 
Join Date: Apr 2009
Location: District 12
Quote:
Originally Posted by majorawsome View Post
[b]Game: sapphire
[b]Type:
[b]Editor:
[b]Script: xse

when i press yes it goes to no. ive been looking for an up-to-date xse tutorial but i cant find any that explain boxset 0x5 well
Spoiler:
#dynamic 0x800000

#org @start
lock
faceplayer
msgbox @question 0x5
compare LASTRESULT 0x0
if b_true goto @yes
msgbox @no 0x6
release
end

#org @question
= yes or no?

#org @yes
msgbox @ya 0x6
goto @done
release
end

#org @no
msgbox @na 0x6
goto @done
release
end

#org @ya
= you said ya!

#org @na
= you said na!

#org @done
msgbox @end 0x6
release
end

#org @end
= i love waffles

Screenshots and/or Videos:
Dude, the guide that comes with XSE explains that so well. >.<
Anyways, then:

Turn this line:

compare LASTRESULT 0x0

to:

compare LASTRESULT 0x1.
__________________
    I wanna be the very best, like Shroomish ever was...
Reply With Quote
  #4004  
Unread May 30th, 2010, 05:38 PM
Binary's Avatar
Binary
え?
 
Join Date: Aug 2007
Age: 18
@Metroid Die:
I think it's special 0x16F after you've already set the flag for the pokedex.
__________________
Reply With Quote
  #4005  
Unread May 30th, 2010, 10:02 PM
trae329
Saving the world by scripting~
 
Join Date: Aug 2008
Game: FireRed US
Editor: XSE
Version: 1.1.1

I'm trying to make the player say something after moving to a certain spot, but nothing happens and the game freezes.
Script:
Spoiler:

#dynamic 0x800000

#org @start
msgbox @talk 0x2
end

#org @talk
= That was a weird dream...


Please help, I have been full of frustration because of this script.
Reply With Quote
  #4006  
Unread May 31st, 2010, 02:25 AM
Binary's Avatar
Binary
え?
 
Join Date: Aug 2007
Age: 18
@trae329:
Are you using a script tile or an OW for the script?
__________________
Reply With Quote
  #4007  
Unread May 31st, 2010, 12:41 PM
trae329
Saving the world by scripting~
 
Join Date: Aug 2008
Quote:
Originally Posted by Binary View Post
@trae329:
Are you using a script tile or an OW for the script?
Sorry, I went to sleep at that time.

I am using a script tile, this is exactly what I want it to do:

The player walks out of his bed and looks up down left and right.
Then he says, "That was a weird dream..."

Do I have to edit something on the tile?
Reply With Quote
  #4008  
Unread May 31st, 2010, 01:01 PM
metapod23's Avatar
metapod23
Hardened Trainer
 
Join Date: Mar 2009
Gender: Male
Nature: Timid
Quote:
Originally Posted by trae329 View Post
Sorry, I went to sleep at that time.

I am using a script tile, this is exactly what I want it to do:

The player walks out of his bed and looks up down left and right.
Then he says, "That was a weird dream..."

Do I have to edit something on the tile?
You need to set a variable to the script tile, like 5000, where it says "var number" and put setvar 0x5000 0x1 at the end of your script so it will only happen once.
__________________
Reply With Quote
  #4009  
Unread May 31st, 2010, 01:21 PM
trae329
Saving the world by scripting~
 
Join Date: Aug 2008
Quote:
Originally Posted by metapod23 View Post
You need to set a variable to the script tile, like 5000, where it says "var number" and put setvar 0x5000 0x1 at the end of your script so it will only happen once.
Okay, I'll try that...

Thanks in advance!

trae329
Reply With Quote
  #4010  
Unread May 31st, 2010, 01:43 PM
trebornosliw's Avatar
trebornosliw
Learning
 
Join Date: Jul 2009
Age: 20
Gender: Male
Nature: Adamant
Alright, so I'm borrowing heavily from Metapod23's daycare-release script to set up a script of my own. The main difference is that I don't want the player to choose which Pokemon gets released, I want the first Pokemon in the party to go into daycare automatically. Wondering if this will work, or if [buffer1] won't pass on all of the necessary info or whatnot:

Spoiler:

#org @start
special2 LASTRESULT 0x84
compare LASTRESULT 0x1
if 0x1 goto @cant
special2 LASTRESULT 0x85
compare LASTRESULT 0x0
if 0x1 goto @cant
bufferfirstpokemon 0x0
special2 0x8005 [buffer1]

special 0x176
cmdc3 0x2F
goto @finish

The main section I'm concerned with is the part in italics. Is that sufficient to store the Pokemon correctly?
__________________
Credit for my avatar goes to the Lego company.
Reply With Quote
  #4011  
Unread May 31st, 2010, 02:05 PM
trae329
Saving the world by scripting~
 
Join Date: Aug 2008
Okay, it worked, but I am trying a new script and it is not working.
I am using the following:
Game: FireRed
Editor: XSE Version 1.1.1
I am using a script tile.
Script:
Spoiler:
#dynamic 0x(FSF Offset)

#org @start
applymovement 0xFF @move
msgbox @1 0x6
end

#org @move
#raw 0x1
#raw 0x0
#raw 0x3
#raw 0x2

#org @1
= That was a weird dream...


Please help, it does the script, but at the end it won't let the player move.
Reply With Quote
  #4012  
Unread May 31st, 2010, 02:46 PM
metapod23's Avatar
metapod23
Hardened Trainer
 
Join Date: Mar 2009
Gender: Male
Nature: Timid
Quote:
Originally Posted by trebornosliw View Post
Alright, so I'm borrowing heavily from Metapod23's daycare-release script to set up a script of my own. The main difference is that I don't want the player to choose which Pokemon gets released, I want the first Pokemon in the party to go into daycare automatically. Wondering if this will work, or if [buffer1] won't pass on all of the necessary info or whatnot:

Spoiler:

#org @start
special2 LASTRESULT 0x84
compare LASTRESULT 0x1
if 0x1 goto @cant
special2 LASTRESULT 0x85
compare LASTRESULT 0x0
if 0x1 goto @cant
bufferfirstpokemon 0x0
special2 0x8005 [buffer1]

special 0x176
cmdc3 0x2F
goto @finish

The main section I'm concerned with is the part in italics. Is that sufficient to store the Pokemon correctly?
I don't think that will work, because the buffer command only stores names, not the data for the Pokemon itself. Not sure how you could make that script work.
__________________
Reply With Quote
  #4013  
Unread May 31st, 2010, 03:15 PM
Binary's Avatar
Binary
え?
 
Join Date: Aug 2007
Age: 18
@trae329:
Spoiler:

#dynamic 0x(FSF Offset)

#org @start
applymovement 0xFF @move
waitmovement 0x0
msgbox @1 0x2
release
end

#org @move
#raw 0x1 0x0 0x3 0x2 0xFE

#org @1
= That was a weird dream...

Mhm..try this. I think the movements are wrong. Then again, I'd have to look.
__________________
Reply With Quote
  #4014  
Unread May 31st, 2010, 03:26 PM
gl3500's Avatar
gl3500
Glcelebi The Rom Hacker
 
Join Date: May 2009
Location: South Africa
Gender: Male
Nature: Calm
What i want to happen is have the sprite go through the door, have a slight delay, then the message "...." pops up and can only be closed with a. Also, i only want the event to happen once, i am just not sure how to use the flags for this, or rather where to place them, i am using firered. Any help appreciated. Thanx My script is almost perfect, i am just having this one problem. I know that the "...." won't come up in this script, i just accidentally erased the one where it does, but that doesn't matter as what i want to do is mentioned above, can anybody please help correct my script so i can see how to do this. Thanx 4 any help.
Spoiler:
#dynamic 0x71B364

#org @start
checkflag 0x202
if 0x1 goto @hi2
goto @hi
closeonkeypress
release
end

#org @clone
#raw 0x13
#raw 0x01
#raw 0xFE

#org @clonefinal
#raw 0x11
#raw 0x11
#raw 0xFE

#org @hi
lockall
applymovement 0x04 @clone
waitmovement 0x0
setdooropened 0x10 0xD
doorchange
applymovement 0x04 @clonefinal
waitmovement 0x0
setdoorclosed 0x10 0xD
doorchange
setflag 0x202
hidesprite 0x800F
msgbox @weird 0x6
closeonkeypress
releaseall
end


#org @hi2
releaseall
end


#org @weird
= .......
__________________
[SIGPIC]
Click here to level up my license!


Waaaaaaaah! I used to be special as i was the only one that could travel through time, and then along comes dialga...
Reply With Quote
  #4015  
Unread May 31st, 2010, 03:32 PM
Binary's Avatar
Binary
え?
 
Join Date: Aug 2007
Age: 18
@gl3500:

Spoiler:
#dynamic 0x71B364

#org @start
checkflag 0x202
if 0x1 goto @done
applymovement 0x03 @clone
waitmovement 0x0
setdooropened 0x10 0xD
doorchange
applymovement 0x03 @clonefinal
waitmovement 0x0
setdoorclosed 0x10 0xD
doorchange
msgbox @weird 0x2
setflag 0x202
release
end

#org @done
release
end


#org @clone
#raw 0x13
#raw 0x01
#raw 0xFE

#org @clonefinal
#raw 0x11
#raw 0x11
#raw 0xFE

#org @weird
= .......

Didn't I already fix this for you? o:
__________________
Reply With Quote
  #4016  
Unread May 31st, 2010, 03:47 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 19
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
Quote:
Originally Posted by trebornosliw View Post
Alright, so I'm borrowing heavily from Metapod23's daycare-release script to set up a script of my own. The main difference is that I don't want the player to choose which Pokemon gets released, I want the first Pokemon in the party to go into daycare automatically. Wondering if this will work, or if [buffer1] won't pass on all of the necessary info or whatnot:

Spoiler:

#org @start
special2 LASTRESULT 0x84
compare LASTRESULT 0x1
if 0x1 goto @cant
special2 LASTRESULT 0x85
compare LASTRESULT 0x0
if 0x1 goto @cant
bufferfirstpokemon 0x0
special2 0x8005 [buffer1]

special 0x176
cmdc3 0x2F
goto @finish

The main section I'm concerned with is the part in italics. Is that sufficient to store the Pokemon correctly?
No, bufferpokemon would not work. What you should do is copybyte @varadress @first_slot_of_pokemon_adress
__________________
~Paired to Full Metal
Reply With Quote
  #4017  
Unread May 31st, 2010, 04:19 PM
trebornosliw's Avatar
trebornosliw
Learning
 
Join Date: Jul 2009
Age: 20
Gender: Male
Nature: Adamant
Ah, that makes more sense, thanks.
So,
copybyte 0x8005 (firstpokemon), does anyone know where the first Pokemon's data is stored? Is there a FIRST_PARTY_POKEMON shortcut or whatnot?
__________________
Credit for my avatar goes to the Lego company.
Reply With Quote
  #4018  
Unread May 31st, 2010, 04:42 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 19
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
no xD
copybyte 0xadressofvar (not var)
also look at jpans work, or hackmews highest level routine. (do some reasherch ^.^)
__________________
~Paired to Full Metal
Reply With Quote
  #4019  
Unread May 31st, 2010, 04:55 PM
gl3500's Avatar
gl3500
Glcelebi The Rom Hacker
 
Join Date: May 2009
Location: South Africa
Gender: Male
Nature: Calm
Quote:
Originally Posted by Binary View Post
@gl3500:

Spoiler:
#dynamic 0x71B364

#org @start
checkflag 0x202
if 0x1 goto @done
applymovement 0x03 @clone
waitmovement 0x0
setdooropened 0x10 0xD
doorchange
applymovement 0x03 @clonefinal
waitmovement 0x0
setdoorclosed 0x10 0xD
doorchange
msgbox @weird 0x2
setflag 0x202
release
end

#org @done
release
end


#org @clone
#raw 0x13
#raw 0x01
#raw 0xFE

#org @clonefinal
#raw 0x11
#raw 0x11
#raw 0xFE

#org @weird
= .......

Didn't I already fix this for you? o:
Not 100%, but thanx, ill try this script and see if it works.

Thanx Binary, it worked perfectly now, appreciate the help! :-)
__________________
[SIGPIC]
Click here to level up my license!


Waaaaaaaah! I used to be special as i was the only one that could travel through time, and then along comes dialga...

Last edited by gl3500; May 31st, 2010 at 05:01 PM. Reason: Your double post has been automatically merged.
Reply With Quote
  #4020  
Unread May 31st, 2010, 05:01 PM
trebornosliw's Avatar
trebornosliw
Learning
 
Join Date: Jul 2009
Age: 20
Gender: Male
Nature: Adamant
Quote:
Originally Posted by NarutoActor View Post
no xD
copybyte 0xadressofvar (not var)
also look at jpans work, or hackmews highest level routine. (do some reasherch ^.^)
You mean I actually have to look stuff up for myself?
*sigh*
Oh well... so be it.
__________________
Credit for my avatar goes to the Lego company.
Reply With Quote
  #4021  
Unread May 31st, 2010, 07:19 PM
Nikolai Fox's Avatar
Nikolai Fox
Smoochum
 
Join Date: Mar 2010
Gender: Male
Okay I'm stuck again.

I used this script:

Spoiler:

#org 0x167643
msgbox 0x8167B5F MSG_NORMAL '"I am the master of the shadows.\pT..."
fadescreen 0x1
showsprite 0x21
hidesprite 0x17
setflag 0x139
clearflag 0x121
fadescreen 0x0
release
end


I have the person I want to disappear's person event ID set to 17, but that person doesn't disappear between the flash. He disappears as normal once I walk away and come back (but even that is only because of the setflag).

I've used the exact script earlier today and it worked fine :/

Would the fact he is placed on a new map be a possible cause?

EDIT: Fixed. It seems you can't use the hidesprite command on an overworld which has a double-digit person event ID? It worked when I switched his to someone elses (whose was 9)
Reply With Quote
  #4022  
Unread May 31st, 2010, 07:36 PM
metapod23's Avatar
metapod23
Hardened Trainer
 
Join Date: Mar 2009
Gender: Male
Nature: Timid
Quote:
Originally Posted by Nikolai Fox View Post
Okay I'm stuck again.

I used this script:

Spoiler:

#org 0x167643
msgbox 0x8167B5F MSG_NORMAL '"I am the master of the shadows.\pT..."
fadescreen 0x1
showsprite 0x21
hidesprite 0x17
setflag 0x139
clearflag 0x121
fadescreen 0x0
release
end


I have the person I want to disappear's person event ID set to 17, but that person doesn't disappear between the flash. He disappears as normal once I walk away and come back (but even that is only because of the setflag).

I've used the exact script earlier today and it worked fine :/

Would the fact he is placed on a new map be a possible cause?

EDIT: Fixed. It seems you can't use the hidesprite command on an overworld which has a double-digit person event ID? It worked when I switched his to someone elses (whose was 9)
The problem was that you need to convert the # to hex in the script. 17 = 11 in hex, because it counts like this:

1 2 3 4 5 6 7 8 9 A B C D E F 10 11

So it should have been hidesprite 0x11.

But yeah, it's always simpler to use lower #s for sprites that involve movements and stuff.
__________________
Reply With Quote
  #4023  
Unread May 31st, 2010, 09:06 PM
Nikolai Fox's Avatar
Nikolai Fox
Smoochum
 
Join Date: Mar 2010
Gender: Male
Oooh I didn't realise the script need it to be in hex. I just assumed because they weren't in hex in A-Map. Should have known lol
Reply With Quote
  #4024  
Unread June 1st, 2010, 06:13 PM
bencask
Beginning Trainer
 
Join Date: Jun 2010
Gender: Male
Hi, I'm trying to make a give pokemon script. To be more specific, I'm trying to make a pokeball sprite give a pokemon to our hero and then vanish. Here's what I've got so far and any help would be better than none.

#org $start
lock
faceplayer
message $yup
$yup 1 =Would you like this (pokemon)?
boxset 5
compare LASTRESULT 1
if B_FALSE goto $finish
givepokemon (pokemon #) 10 0
setflag 0x(person id)
#raw 0x53
#raw 0x(person event #)
#raw 0x00
release
end

#org $finish
release
end

Thanks!
Reply With Quote
  #4025  
Unread June 1st, 2010, 11:48 PM
trebornosliw's Avatar
trebornosliw
Learning
 
Join Date: Jul 2009
Age: 20
Gender: Male
Nature: Adamant
Quote:
Originally Posted by bencask View Post
Hi, I'm trying to make a give pokemon script. To be more specific, I'm trying to make a pokeball sprite give a pokemon to our hero and then vanish. Here's what I've got so far and any help would be better than none.
Spoiler:

#org $start
lock
faceplayer
message $yup
$yup 1 =Would you like this (pokemon)?
boxset 5
compare LASTRESULT 1
if B_FALSE goto $finish
givepokemon (pokemon #) 10 0
setflag 0x(person id)
#raw 0x53
#raw 0x(person event #)
#raw 0x00
release
end

#org $finish
release
end

Thanks!
First, use spoilers (just put [SPOILER*] before and [/SPOILER*] after the script, minus the asterisks), it's in the rules.
Second, I highly recommend that you switch to XSE. It's not at all hard to learn after you've gone through the Pokescript basics, it's much more efficient, far less buggy, and people won't despise you for using it. Here's a tut: http://www.pokecommunity.com/showthr...t=xse+tutorial
Now, as for the script, there are a couple of problems I can see (keep in mind this isn't my forte).
First, $yup needs to be a separate segment, so move it down. Second, it would be best to have a "closeonkeypress" command before "release, end" in $finish, to get rid of that box, though I'm not sure if that command works for Pokescript or not. You can always just add another message, like "Oh, okay then," instead.
Corrections in bold, I'm doing the extra message for now.
Spoiler:

#org $start
lock
faceplayer
message $yup
boxset 5
compare LASTRESULT 1
if B_FALSE goto $finish
givepokemon (pokemon #) 10 0
setflag 0x(person id)
#raw 0x53
#raw 0x(person event #)
#raw 0x00
release
end

#org $finish
msgbox $nope
boxset 6
release
end

#org $yup 1
= Would you like this (pokemon)?


#org $nope 1
= Oh, okay then...
'(It should also be noted that I'm not sure this is the right way to write strings in Pokescript...)

...
I have no idea what the #raws are for here. What was your intention with these?
__________________
Credit for my avatar goes to the Lego company.
Reply With Quote
Reply
Quick Reply

Sponsored Links


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC. The time now is 06:53 AM.


Style by Perdition Haze, artwork by Sa-Dui.
Like our Facebook Page Follow us on TwitterMessage Board Statistics | © 2002 - 2013 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to Pokémon USA, Inc. and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company, Pokémon USA, Inc., The Pokémon Company International, or Wizards of the Coast. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2013 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 posts belong to the user.