Official GHost++ Home - Codelain.com
September 08, 2010, 12:46:35 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [Important] Read before you Post!  (Read 9788 times)
0 Members and 1 Guest are viewing this topic.
Fallen-God
Chief Technical Officer
Distinct Contributor
*
Offline Offline

Posts: 1300


Refurbing LainNoc!


View Profile
« on: May 29, 2009, 09:41:58 PM »


Help Topic Summary
  • Read FAQ and Search Forum Before You Post
  • Give Meaningful Title To Post Summarizing Problem Symptom
  • Give Full Detail & Symptom About Your Problem In Body Of Post
  • Attach Config Or Other Necessary Links To Data Or File





How to Ask for Help: Lite (If you think this is long, you should have seen the unedited one Tongue)


Update: Do NOT post Ghost One issues in this forum. It is For GHost++ only. Ghost One now has its own forum HERE!


Note: Key themes are marked in red. Other things that should be paid attention to are in orange.


1.   What to consider before you ask

2.   What to consider when you ask
•   Choosing which forum to post your topic in
•   Choosing a suitable topic title
•   Language points
•   How to format your problem
•   Using code tags
•   When asking about code
•   Do not use words of the sake of it…
•   Be polite and say Thanks!
•   Sum up the fix to help people in the future


3.    What to make of your answers
•   How to tell you have screwed up
•   What to do if you do not understand the answers
•   What to make of seeming rudeness
•   What to do if you do not get any answers


4.    Questions NOT to ask











Before You Ask


Before asking a technical question on this forum, please do the following:

1.   Try to find an answer by searching the archives of the Ghost++ forums.
2.   Try to find an answer by searching Tutorials page
3.   Try to find an answer by reading the FAQ
4.   Try to find an answer by personal inspection or experimentation of/with your bot.

5.   If you're a programmer, try to find an answer by reading the source code.

Remember to make it clear that you have already tried to do all of this when you post. If you don’t, we will probably assume that you couldn’t be bothered to follow these simple and easy steps, and tell you to go away and actually experiment a bit before you try. By doing this, it is very likely you will find your answer without waiting for one of us to reply; saving everyone time and energy.



When You Ask

Choose your forum carefully


Be sensitive in choosing where you ask your question. You are likely to be ignored, or just told to post somewhere else, if you:

•   post your question to a forum where it's off topic
•   post a very elementary question to a forum where advanced source code questions are asked, or vice versa
•   send a PM to somebody who is neither an acquaintance of yours nor personally responsible for solving your problem

The first step, therefore, is to find the right forum. Look at the different forums available to you. Just because you are trying to connect to a PvPGN doesn’t mean than you should necessarily post your problem in the “GHost++ PVPGN Specific Help” If you seek general technical support, post elsewhere.


Use meaningful, specific topic titles

On the forums, the topic title is your golden opportunity to attract qualified experts' attention in around 50 characters or fewer. Don't waste it on babble like “Please help me” (let alone “PLEASE HELP ME!!!!” messages with subjects like that get discarded by reflex). Don't try to impress us with the depth of your anguish; use the space for a super-concise problem description instead.

Stupid:
Quote
HELP! Bot keeps disconnecting!!!!


Smart:
Quote
[BNLSPROTO] Error code 3


Smarter:
Quote
Received error code 3 – auto-reconnect doesn’t solve



Write in clear, grammatical, correctly-spelled language

We've found by experience that people who are careless and sloppy writers are usually also careless and sloppy at thinking and coding (often enough to bet on, anyway). Answering questions for careless and sloppy thinkers is not rewarding; we'd rather spend our time elsewhere.

More generally, if you write like a semi-literate boob you will very likely be ignored. So don't use instant-messaging shortcuts. Spelling "you" as "u" makes you look like a lazy moron who is willing to force us to decipher barely comprehensible cyber-babble in order to save two entire keystrokes. Worse: writing like a l33t script kiddie hax0r is the absolute kiss of death and guarantees you will receive nothing but stony silence (or, at best, a heaping helping of scorn and sarcasm) in return.

If you are asking questions in a forum that does not use your native language, you will get slack for spelling and grammar errors — but no extra slack at all for laziness (and yes, we can usually spot that difference). Also, unless you know what your respondent's language is, write in English.


How to format your question


When asking for help, you need to specify your issue. Remember to answer the following questions in your original post:
•   Are you setting up GHost++ for the first time?
•   Which release of GHost++ are you using?
•   Has GHost worked previously?
•   Are you experiencing a continuous or an intermittent problem?

Once you have answered those questions, include the following information in your post:

•   GHost.cfg (if appropriate)
•   GHost.log (if appropriate)
•   Map.cfg (if appropriate)


If you aren’t sure whether or not it is appropriate, include it anyway. We will not get angry if you include irrelevant information.

Remember to remove any CD Keys, passwords, etc. from your GHost.cfg !





Please, for the love of God, use Code tags

If a technician asks anything from you (like or ghost.cfg, ghost.log, map.cfg, etc.), please make sure you put whatever is asked of you in code tags.

Code tags are used thus:

[code]Whatever you want in the code tags[/code]

This turns that text into this:

Code:
Whatever you want in the code tags

These code tags are especially important because, when the text gets very long (which ghost.cfg, etc. are) a scroll bar is put down the side like this:

Code:
#####################
# BOT CONFIGURATION #
#####################

### the log file

bot_log = ghost.log

### the language file

bot_language = language.cfg

### the path to your local Warcraft III directory
###  this path must contain war3.exe, storm.dll, and game.dll
###  this path must end in your system's path seperator (i.e. "\" on Windows or "/" on Linux)
###  if this path contains War3Patch.mpq the bot will attempt to extract "Scripts\common.j" and "Scripts\blizzard.j" on startup and write them to bot_mapcfgpath (which is defined later in this file)
###  common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc

bot_war3path = C:\Program Files\Warcraft III\

### the address GHost++ will bind to when hosting games (leave it blank to bind to all available addresses)
###  if you don't know what this is just leave it blank

bot_bindaddress =

### the port GHost++ will host battle.net games on (this must be different from your admingame_port)

bot_hostport = 6112

### maximum number of games to host at once

bot_maxgames = 5

### command trigger for ingame only (battle.net command triggers are defined later)

bot_commandtrigger = -

### the path to the directory where you keep your map config files (must end in your system's path seperator)
###  this directory can also contain common.j and blizzard.j (extracted from War3Patch.mpq)
###  common.j and blizzard.j are only required for automatically calculating map_crc, you do not need them if your map config files already contain map_crc

bot_mapcfgpath = mapcfgs\

### the path to the directory where you keep your savegame files (must end in your system's path seperator)

bot_savegamepath = savegames\

### the path to the directory where you keep your map files (must end in your system's path seperator)
###  GHost++ doesn't require map files but if it has access to them it can send them to players and automatically calculate most map config values
###  GHost++ will search [bot_mappath + map_localpath] for the map file (map_localpath is set in each map's config file)

bot_mappath = maps\

### whether to save replays or not

bot_savereplays = 0

### the path to the directory where you want GHost++ to save replays (must end in your system's path seperator)

bot_replaypath = replays\

### the bot's virtual host name as it appears in the game lobby
###  colour codes are defined by the sequence "|cFF" followed by a six character hexadecimal colour in RRGGBB format (e.g. 0000FF for pure blue)
###  the virtual host name cannot be longer than 15 characters including the colour code, if you try to go over this limit GHost++ will use the default virtual host name

bot_virtualhostname = |cFF4080C0GHost

### whether to hide each player's IP address from other players or not

bot_hideipaddresses = 0

### whether to check for multiple IP address usage or not

bot_checkmultipleipusage = 1

### whether to require spoof checks or not
###  disabling spoof checks just turns off automatic spoof checks and requiring players to be spoof checked before starting the game
###  spoof checks need to be enabled if you want GHost++ to detect which realm each player came from (use the !check command to see the realm)
###  you can always manually spoof check by whispering the bot (and in fact is required before running admin commands)

bot_spoofchecks = 1

### whether to display game refresh messages by default
###  this can always be changed for a particular game with the !refresh command

bot_refreshmessages = 0

### whether to automatically lock games when the owner joins

bot_autolock = 0

### whether to automatically save games when a player disconnects
###  this can always be changed for a particular game with the !autosave command

bot_autosave = 0

### whether to allow map downloads or not
###  set to 0 to disable map downloads
###  set to 1 to enable map downloads
###  set to 2 to enable conditional map downloads (an admin must start each map download with the !download or !dl command)

bot_allowdownloads = 1

### whether to ping players during map downloads or not
###  GHost++ will always stop pinging any players who are downloading the map
###  this config value determines whether GHost++ should stop pinging *all* players when at least one player is downloading the map

bot_pingduringdownloads = 0

### the maximum number of players allowed to download the map at the same time

bot_maxdownloaders = 3

### the maximum combined download speed of all players downloading the map (in KB/sec)

bot_maxdownloadspeed = 100

### use LC style pings (divide actual pings by two)

bot_lcpings = 1

### auto kick players with ping higher than this

bot_autokickping = 400

### the ban method
###  if bot_banmethod = 1, GHost++ will automatically reject players using a banned name
###  if bot_banmethod = 2, GHost++ will automatically reject players using a banned IP address
###  if bot_banmethod = 3, GHost++ will automatically reject players using a banned name or IP address
###  if bot_banmethod is anything else GHost++ will print a message when a banned player joins but will not automatically reject them

bot_banmethod = 1

### the IP blacklist file

bot_ipblacklistfile = ipblacklist.txt

### automatically close the game lobby if a reserved player (or admin) doesn't join it for this many minutes
###  games which are set to automatically start when enough players join are exempt from this limit (e.g. autohosted games)

bot_lobbytimelimit = 10

### the game latency
###  this can always be changed for a particular game with the !latency command (which enforces a minimum of 50 and a maximum of 500)

bot_latency = 100

### the maximum number of packets a player is allowed to get out of sync by before starting the lag screen
###  before version 8.0 GHost++ did not have a lag screen which is the same as setting this to a very high number
###  this can always be changed for a particular game with the !synclimit command (which enforces a minimum of 10 and a maximum of 10000)

bot_synclimit = 50

### whether votekicks are allowed or not

bot_votekickallowed = 1

### the percentage of players required to vote yes for a votekick to pass
###  the player starting the votekick is assumed to have voted yes and the player the votekick is started against is assumed to have voted no
###  the formula for calculating the number of votes needed is votes_needed = ceil( ( num_players - 1 ) * bot_votekickpercentage / 100 )
###  this means it will round UP the number of votes required
###  if you set it to 100 it will require 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, and 11/12 votes to pass
###  if you set it to 90 it will require 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 9/11, and 10/12 votes to pass
###  if you set it to 80 it will require 2/3, 3/4, 4/5, 4/6, 5/7, 6/8, 7/9, 8/10, 8/11, and 9/12 votes to pass
###  if you set it to 70 it will require 2/3, 3/4, 3/5, 4/6, 5/7, 5/8, 6/9, 7/10, 7/11, and 8/12 votes to pass
###  if you set it to 60 it will require 2/3, 2/4, 3/5, 3/6, 4/7, 5/8, 5/9, 6/10, 6/11, and 7/12 votes to pass

bot_votekickpercentage = 100

### the default map (the .cfg is added automatically)

bot_defaultmap = dota6.59

### the MOTD file
###  the first 8 lines of this file will be displayed when a player joins the game
###  if this file doesn't exist a default MOTD will be used

bot_motdfile = motd.txt

### the gameloaded file
###  the first 8 lines of this file will be displayed when the game finished loading (after the player loading times are displayed)

bot_gameloadedfile = gameloaded.txt

### the gameover file
###  the first 8 lines of this file will be displayed when the game is over
###  this only works when using a stats class - note: at the time of this writing the only stats class is for DotA maps

bot_gameoverfile = gameover.txt

############################
# ADMIN GAME CONFIGURATION #
############################

### whether to create the admin game or not (see readme.txt for more information)

admingame_create = 0

### the port GHost++ will host the admin game on (this must be different from your bot_hostport)

admingame_port = 6113

### the admin game password

admingame_password = Removed

##########################
# DATABASE CONFIGURATION #
##########################

### database type
###  use "sqlite3" for a local SQLite database
###  use "mysql" for any MySQL database

db_type = sqlite3

### sqlite3 database configuration
###  this is only used if your database type is SQLite

db_sqlite3_file = ghost.dbs

### mysql database configuration
###  this is only used if your database type is MySQL

db_mysql_server = localhost
db_mysql_database = ghost
db_mysql_user = YOUR_USERNAME
db_mysql_password = YOUR_PASSWORD
db_mysql_port = 0

############################
# BATTLE.NET CONFIGURATION #
############################

### which battle.net server to connect to
###  1.) useast.battle.net
###  2.) uswest.battle.net
###  3.) asia.battle.net
###  4.) europe.battle.net
### note that each banned player is tied to the realm it was created on and the realm is case sensitive
### so if you change your realm from useast.battle.net to USEAST.BATTLE.NET it'll still connect but anyone previously banned will not be counted as banned until you change it back

bnet_server = useast.battle.net

### your Warcraft III: Reign of Chaos CD key

bnet_cdkeyroc =

### your Warcraft III: The Frozen Throne CD key

bnet_cdkeytft =

### your battle.net username

bnet_username =

### your battle.net password

bnet_password =

### the first channel to join upon entering battle.net

bnet_firstchannel =

### the root admin on this battle.net server only

bnet_rootadmin =

### command trigger for this battle.net server only

bnet_commandtrigger = -

### whether to automatically add your friends list to each game's reserved list

bnet_holdfriends = 1

### whether to automatically add your clan members list to each game's reserved list

bnet_holdclan = 1

### BNLS server information for Warden handling (see readme.txt for more information)
###  you will need to use a valid BNLS server here if you are connecting to an official battle.net realm or you will be disconnected every two minutes

bnet_server = useast.battle.net
bnet_bnlsserver = localhost
bnet_bnlsport = 9367
bnet_bnlswardencookie = 0


### you will need to edit this section of the config file if you're connecting to a PVPGN server
###  your PVPGN server operator will tell you what to put here

bnet_custom_war3version = 23
bnet_custom_exeversion =
bnet_custom_exeversionhash =
bnet_custom_passwordhashtype =

###
### example configuration for connecting to a second official battle.net server
###

# bnet2_server = uswest.battle.net
# bnet2_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet2_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet2_username =
# bnet2_password =
# bnet2_firstchannel = The Void
# bnet2_rootadmin =
# bnet2_commandtrigger = !
# bnet2_holdfriends = 1
# bnet2_holdclan = 1
# bnet2_bnlsserver = localhost
# bnet2_bnlsport = 9367
# bnet2_bnlswardencookie = 2

###
### example configuration for connecting to a third PVPGN battle.net server
###

# bnet3_server = server.eurobattle.net
# bnet3_cdkeyroc = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet3_cdkeytft = FFFFFFFFFFFFFFFFFFFFFFFFFF
# bnet3_username =
# bnet3_password =
# bnet3_firstchannel = The Void
# bnet3_rootadmin =
# bnet3_commandtrigger = !
# bnet3_holdfriends = 1
# bnet3_holdclan = 1
# bnet3_custom_war3version = 23
# bnet3_custom_exeversion = 184 0 22 1
# bnet3_custom_exeversionhash = 219 152 153 144
# bnet3_custom_passwordhashtype = pvpgn

As you can see, that is much more manageable than the 8 pages of text it normally is.





Be precise and informative about your problem

•   Describe the symptoms of your problem or bug carefully and clearly.
•   Describe the environment in which it occurs (machine, OS, Ghost version)
•   Describe the research you did to try and understand the problem before you asked the question.
•   Describe the diagnostic steps you took to try and pin down the problem yourself before you asked the question.
•   Describe any possibly relevant recent changes in your computer or software configuration.

Please, provide your ghost.log and ghost.cfg (or map.cfg file) in your original post (see above).


Describe the problem's symptoms, not your guesses


It's not useful to tell the mod what you think is causing your problem. If you already think you know what the problem is, then why haven’t you tested that theory yet?


Be explicit about your question

Open-ended questions tend to be perceived as open-ended time sinks. Those people most likely to be able to give you a useful answer are also the busiest people (if only because they take on the most work themselves). People like that are allergic to open-ended time sinks, thus they tend to be allergic to open-ended questions.

You are more likely to get a useful response if you are explicit about what you want respondents to do (provide pointers, send code, check your patch, whatever). This will focus their effort and implicitly put an upper bound on the time and energy a respondent must allocate to helping you. This is good.

So it is useful to frame your question to minimize the time commitment required for an expert to field it — but this is often not the same thing as simplifying the question. Thus, for example, “Would you give me a pointer to a good explanation of X?” is usually a smarter question than “Would you explain X, please?”. If you have some malfunctioning code, it is usually smarter to ask for someone to explain what's wrong with it than it is to ask someone to fix it.


When asking about code

Don't ask others to debug your broken code without giving a hint what sort of problem they should be searching for. Posting a few hundred lines of code, saying "it doesn't work", will get you ignored. Posting a dozen lines of code, saying "after line 7 I was expecting to see <x>, but <y> occurred instead" is much more likely to get you a response.

If you simply want a code review, say as much up front, and be sure to mention what areas you think might particularly need review and why.


Prune pointless queries

Resist the temptation to close your request for help with semantically-null questions like “Can anyone help me?” or “Is there an answer?” First: if you've written your problem description halfway competently, such tacked-on questions are at best superfluous. Second: because they are superfluous, mods find them annoying — and are likely to return logically impeccable but dismissive answers like “Yes, you can be helped” and “No, there is no help for you.”

In general, asking yes-or-no questions is a good thing to avoid unless you want a yes-or-no answer.


Courtesy never hurts, and sometimes helps

Be courteous. Use “Please” and “Thanks for your attention” or “Thanks for your consideration”. Make it clear you appreciate the time people spend helping you for free.

To be honest, this isn't as important as (and cannot substitute for) being grammatical, clear, precise and descriptive, avoiding proprietary formats etc.; helpers in general would rather get somewhat brusque but technically sharp bug reports than polite vagueness. (If this puzzles you, remember that we value a question by what it teaches us.)

However, if you've got your technical ducks in a row, politeness does increase your chances of getting a useful answer.


Follow up with a brief note on the solution

Send a note after the problem has been solved to all who helped you; let them know how it came out and thank them again for their help.

Optimally, the reply should be to the thread started by the original question posting, and should have ‘FIXED’, ‘RESOLVED’ or an equally obvious tag in the subject line. A potential respondent who sees a thread about “Problem X” ending with “Problem X - FIXED” knows not to waste his/her time even reading the thread (unless (s)he) personally finds Problem X interesting) and can therefore use that time solving a different problem.

Your follow up doesn't have to be long and involved; a simple “Howdy — it was a space after my cdkey! Thanks, everyone. - Bill” would be better than nothing. In fact, a short and sweet summary is better than a long dissertation unless the solution has real technical depth. Say what action solved the problem, but you need not replay the whole troubleshooting sequence.



How to interpret answers

RTFM: How To Tell You've Seriously Screwed Up


There is an ancient and hallowed tradition: if you get a reply that reads “RTFM”, the person who sent it thinks you should have Read The Fucking Manual. He or she is almost certainly right. Go read it.

You may also be told to search the forum archives, although most people will provide a link of the place which they had hoped you might find on your own.

Often, the person telling you to do a search has just conducted it themselves. This reply mean that he thinks (a) the information you need is easy to find, and (b) you will learn more if you seek out the information than if you have it spoon-fed to you.

You shouldn't be offended by this; by most standards, your respondent is showing you a rough kind of respect simply by not ignoring you. You should instead be thankful for this grandmotherly kindness.


If you don't understand...

Tell us! I, for one, would be happy to clarify any points or fixes I have given to you. However please do not come straight back and tell us we are speaking nonsense:

Stupid:
Quote
Wtf do you mean by <quote>?


Smart:
Quote
Sorry can you clarify what you meant when you said <quote> for me please?


If you opt for option 2, the answer will invariably be “Yes, of course I will clarify it for you.”


Dealing with rudeness

Much of what looks like rudeness is not intended to give offense. Rather, it's the product of the direct, cut-through-the-bullshit communications style that is natural to people who are more concerned about solving problems than making others feel warm and fuzzy.

When you perceive rudeness, try to react calmly. If someone is really acting out, it is very likely that someone else on the forum will call him or her on it. If that doesn't happen and you lose your temper, it is likely that the person you lose it at was behaving within the community's norms and you will be considered at fault. This will hurt your chances of getting the information or help you want.


If you cannot get an answer

If you can't get an answer, please don't take it personally that we don't feel we can help you. Sometimes the members of the asked group may simply not know the answer. No response is not the same as being ignored, though admittedly it's hard to spot the difference from outside.

In general, simply re-posting your question is a bad idea. This will be seen as pointlessly annoying. Also please do not bump your topics often. An occasional nudge to keep them on page one is acceptable, but no more than that.
Have patience! The person who is going to solve your problem may be asleep or unavailable.
Whatever you do, do not say things like:
Quote
Oh you are all so useless! Is anyone actually going to try to help me??

This will likely alienate people and you will be much less likely to receive help.


Questions NOT to ask

Here are some classic stupid questions, and what we are thinking when they don't answer them.

Q: Where can I find resource X?
Q: My {patch, configuration, SQL statement} doesn't work
Q: My bot doesn't work. I think system facility X is broken.
Q: How do I mod Ghost to steal CDKeys?


Q:   Where can I find  resource X?

A:   The same place I'd find it, fool — at the other end of a web search. God, doesn't everybody know how to use Google yet?

Q:   My {bot, configuration, SQL statement} doesn't work
A:   This is not a question, and I'm not interested in playing Twenty Questions to pry your actual question out of you — I have better things to do. On seeing something like this, my reaction is normally of one of the following:
•   do you have anything else to add to that?
•   oh, that's too bad, I hope you get it fixed.
•   and this has exactly what to do with me?
If you would like someone to check your code, point them where you think the problem is and be precise at to the error.

Q:   My bot doesn't work. I think system facility X is broken.
A:   While it is possible that you are the first person to notice an obvious deficiency in a bot heavily used by hundreds if not thousands of people, it is rather more likely that you are utterly clueless. Extraordinary claims require extraordinary evidence; when you make a claim like this one, you must back it up with clear and exhaustive documentation of the failure case.

Q:   How do I mod Ghost to steal CDKeys?
A:   You're a lowlife for wanting to do such things and a moron for asking me to help you. Go throw yourself off something high.
« Last Edit: July 29, 2010, 08:52:22 PM by leax » Logged

Quote from: Me
Quote from: Some idiot
Your only other option is so physically break it down into as many small parts as possible - this means either taking a hammer to it, or shooting it.
Right. The best way for him to clear some disk space is to shoot his hard drive.
Official GHost++ Home - Codelain.com
« on: May 29, 2009, 09:41:58 PM »

 Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!