Deep Bot - Twitch Streamer Assistant
Deep Bot => Help/Support => Topic started by: WasabiIceCream on March 26, 2016, 05:27:42 AM
-
DEEPBOT RPG
So, I've been working on this thing for a bit, and it's just not working the way it needs to be.
Honestly, I'm not a great programmer, and my code solutions are totally unoptimized, but works, however unstable in its current form.
I'll post everything I've got so far, and explain it all, and hopefully we can make this a community effort, or something.
What I've got is pretty messy, but I can explain it all. Here's a .zip of the folder and file structure: https://www.dropbox.com/s/w7ysqki8jx1frw4/RPG.zip?dl=0 (https://www.dropbox.com/s/w7ysqki8jx1frw4/RPG.zip?dl=0)
And, here's a .zip all the individual command code in .txt, for ease of use: https://www.dropbox.com/s/ff6jehmryfgrclq/RPG%20Code.zip?dl=0
Also, if you just want to see this in action, I've got it running on my Twitch channel (https://www.twitch.tv/gameoverse).
This all starts by creating the folders in the Custom Logs:
RPG
- Adjectives (These are used to randomly generate a unique monster name, by combining an adjective in front of the normal monster name.)
- Classes (Users can choose 1 of 5 classes. Only difference is starting stats right now.)
- Enemies (Enemy names are stored in here. I just took most of them from the MMORPG Ragnarok Online.)
- - log (User combat logs are stored here, with the current enemy name, enemy stats, and rewards for killing the enemy.)
- Levels (Does nothing. Not required. Not sure what I was planning with this. Maybe like, Town or Quest locations, or something.)
- Users (User logs are stored here. Tracks whether they've initiated an RPG character, and tracks all their stats.)
- Weapons (Does nothing. Not required. I was planning a whole equipment thing, but I couldn't figure out a good way to do it.)
Then, comes the actual code, and this'll get a bit thick and heavy.
Initialization:
Every user will initialize an RPG character by using the !rpg command:
@if@[@readfile@[RPG\Users\@user@.txt]||1||!rpg2||@if@[@target@||Assassin||!rpginitass||@if@[@target@||Barbarian||!rpginitbar||@if@[@target@||Cleric||!rpginitcle||@if@[@target@||Templar||!rpginittem||@if@[@target@||Wizard||!rpginitwiz||@user@, you must choose a class. (Assassin, Barbarian, Cleric, Templar, or Wizard)]]]]]]
The code will check if the user already has an RPG character, (if "RPG\Users\@user@.txt" exists, and contains a "1"), and if so, will run !rpg2, which will show basic stats.
If the user does not have a character, one will be created based on the class provided with @target@. The classes are all Case-Sensitive. Users will be told to choose a class if they screw it up.
It's at this point where all of the .txt files are created for the user, as well. Their stats will be tracked in the "Users" folder, with their Username prefixing each stat.
Concerning stats, most of them are not taken into account yet, but were planned to be used later. I'll explain more in the Combat section.
!rpg2
@user@, you are a Level @readfile@[RPG\Users\@user@Level.txt] @readfile@[RPG\Classes\@readfile@[RPG\Users\@user@Class.txt].txt]. Use !stats to check your Stats.
Settings: Hide From Command List
!rpginitass
@savefile@[RPG\Users\@user@.txt,1]@savefile@[RPG\Users\@user@Level.txt,1]@savefile@[RPG\Users\@user@Class.txt,1]@savefile@[RPG\Users\@user@Vit.txt,10]@savefile@[RPG\Users\@user@End.txt,12]@savefile@[RPG\Users\@user@Str.txt,10]@savefile@[RPG\Users\@user@Dex.txt,18]@savefile@[RPG\Users\@user@Int.txt,10]@savefile@[RPG\Users\@user@Wis.txt,15]@savefile@[RPG\Users\@user@Luc.txt,16]@savefile@[RPG\Users\@user@MaxHealth.txt,250]@savefile@[RPG\Users\@user@CurrentHealth.txt,250]@savefile@[RPG\Users\@user@Exp.txt,0]@savefile@[RPG\Users\@user@ExpToLevel.txt,25]
Settings: Hide From Command List and Command Chain !rpginit3
!rpginitbar
@savefile@[RPG\Users\@user@.txt,1]@savefile@[RPG\Users\@user@Level.txt,1]@savefile@[RPG\Users\@user@Class.txt,2]@savefile@[RPG\Users\@user@Vit.txt,18]@savefile@[RPG\Users\@user@End.txt,16]@savefile@[RPG\Users\@user@Str.txt,18]@savefile@[RPG\Users\@user@Dex.txt,10]@savefile@[RPG\Users\@user@Int.txt,10]@savefile@[RPG\Users\@user@Wis.txt,11]@savefile@[RPG\Users\@user@Luc.txt,11]@savefile@[RPG\Users\@user@MaxHealth.txt,450]@savefile@[RPG\Users\@user@CurrentHealth.txt,450]@savefile@[RPG\Users\@user@Exp.txt,0]@savefile@[RPG\Users\@user@ExpToLevel.txt,25]
Settings: Hide From Command List and Command Chain !rpginit3
!rpginitcle
@savefile@[RPG\Users\@user@.txt,1]@savefile@[RPG\Users\@user@Level.txt,1]@savefile@[RPG\Users\@user@Class.txt,3]@savefile@[RPG\Users\@user@Vit.txt,12]@savefile@[RPG\Users\@user@End.txt,16]@savefile@[RPG\Users\@user@Str.txt,16]@savefile@[RPG\Users\@user@Dex.txt,10]@savefile@[RPG\Users\@user@Int.txt,10]@savefile@[RPG\Users\@user@Wis.txt,18]@savefile@[RPG\Users\@user@Luc.txt,12]@savefile@[RPG\Users\@user@MaxHealth.txt,300]@savefile@[RPG\Users\@user@CurrentHealth.txt,300]@savefile@[RPG\Users\@user@Exp.txt,0]@savefile@[RPG\Users\@user@ExpToLevel.txt,25]
Settings: Hide From Command List and Command Chain !rpginit3
!rpginittem
@savefile@[RPG\Users\@user@.txt,1]@savefile@[RPG\Users\@user@Level.txt,1]@savefile@[RPG\Users\@user@Class.txt,4]@savefile@[RPG\Users\@user@Vit.txt,20]@savefile@[RPG\Users\@user@End.txt,16]@savefile@[RPG\Users\@user@Str.txt,15]@savefile@[RPG\Users\@user@Dex.txt,10]@savefile@[RPG\Users\@user@Int.txt,10]@savefile@[RPG\Users\@user@Wis.txt,11]@savefile@[RPG\Users\@user@Luc.txt,8]@savefile@[RPG\Users\@user@MaxHealth.txt,500]@savefile@[RPG\Users\@user@CurrentHealth.txt,500]@savefile@[RPG\Users\@user@Exp.txt,0]@savefile@[RPG\Users\@user@ExpToLevel.txt,25]
Settings: Hide From Command List and Command Chain !rpginit3
!rpginitwiz
@savefile@[RPG\Users\@user@.txt,1]@savefile@[RPG\Users\@user@Level.txt,1]@savefile@[RPG\Users\@user@Class.txt,5]@savefile@[RPG\Users\@user@Vit.txt,8]@savefile@[RPG\Users\@user@End.txt,10]@savefile@[RPG\Users\@user@Str.txt,7]@savefile@[RPG\Users\@user@Dex.txt,13]@savefile@[RPG\Users\@user@Int.txt,20]@savefile@[RPG\Users\@user@Wis.txt,15]@savefile@[RPG\Users\@user@Luc.txt,12]@savefile@[RPG\Users\@user@MaxHealth.txt,200]@savefile@[RPG\Users\@user@CurrentHealth.txt,200]@savefile@[RPG\Users\@user@Exp.txt,0]@savefile@[RPG\Users\@user@ExpToLevel.txt,25]
Settings: Hide From Command List and Command Chain !rpginit3
!rpginit3
@user@ is now a Level @readfile@[RPG\Users\@user@Level.txt] @readfile@[RPG\Classes\@readfile@[RPG\Users\@user@Class.txt].txt]!
This just announces in chat that someone has created a new character.
Settings: Hide From Command List
!stats
@if@[@readfile@[RPG\Users\@user@.txt]||1||@user@, Level @readfile@[RPG\Users\@user@Level.txt] @readfile@[RPG\Classes\@readfile@[RPG\Users\@user@Class.txt].txt], Vitality: @readfile@[RPG\Users\@user@Vit.txt], Endurance: @readfile@[RPG\Users\@user@End.txt], Strength: @readfile@[RPG\Users\@user@Str.txt], Dexterity: @readfile@[RPG\Users\@user@Dex.txt], Intelligence: @readfile@[RPG\Users\@user@Int.txt], Wisdom: @readfile@[RPG\Users\@user@Wis.txt], Luck: @readfile@[RPG\Users\@user@Luc.txt], Experience: @readfile@[RPG\Users\@user@Exp.txt]/@readfile@[RPG\Users\@user@ExpToLevel.txt], Health: @readfile@[RPG\Users\@user@CurrentHealth.txt]/@readfile@[RPG\Users\@user@MaxHealth.txt]||@user@, you must create a character first. Use the !rpg command.]
Note: This command, as well as any other main commands, will (should) always check if the user has created an RPG character first. Bad things happen otherwise.
Combat:
Now, this is where things either start falling apart, or flaws in the previous code are broken even further.
In my testing, I found it's not a good idea to use @savefile@ and @readfile@ to manipulate and display the same value in the same command.
So, for 1 fight to happen, I had to split the code across several commands. Usually one that manipulates the value, and another that either displays it, or manipulates it further.
However, this still isn't very clean, and I'll explain what's broken as we go. There is a fatal flaw that I will also point out where I think this may be occurring.
!fight
@if@[@readfile@[RPG\Users\@user@.txt]||1||!fightencounter||@user@, you must create a character first. Use the !rpg command.]
There's the user character check.
!fightencounter
@savefile@[RPG\Enemies\log\@user@CurrentMonster.txt,@readfile@[RPG\Adjectives\@rand@[1|70].txt] @readfile@[RPG\Enemies\@rand@[1|50].txt]] @savefile@[RPG\Enemies\log\@user@CurrentMonsterLevel.txt,@calc@[+|@rand@[0|5]|@readfile@[RPG\Users\@user@Level.txt]]] @savefile@[RPG\Enemies\log\@user@CurrentMonsterHP.txt,@calc@[-|@readfile@[RPG\Users\@user@MaxHealth.txt]|@rand@[0|50]]] @savefile@[RPG\Enemies\log\@user@PointPot.txt,@calc@[+|@rand@[0|@readfile@[RPG\Enemies\log\@user@CurrentMonsterLevel.txt]]|@rand@[0|@readfile@[RPG\Users\@user@Level.txt]]]] @savefile@[RPG\Enemies\log\@user@ExpPot.txt,@calc@[+|@readfile@[RPG\Enemies\log\@user@CurrentMonsterLevel.txt]|@readfile@[RPG\Users\@user@Level.txt]]]
This will create an enemy for the user to fight, with a funny name that is randomly generated. Each user has their own enemy, with their username prefixed to the monster logs.
User stats are taken into account here. Enemy level, Point reward, and EXP reward are based on User's level. Enemy health is based on User's max health.
Settings: Hide From Command List and Command Chain !fightencounter2
!fightencounter2
@user@ encounters a Level @readfile@[RPG\Enemies\log\@user@CurrentMonsterLevel.txt] @readfile@[RPG\Enemies\log\@user@CurrentMonster.txt], with @readfile@[RPG\Enemies\log\@user@CurrentMonsterHP.txt]HP.
This just announces in chat that a fight has began.
Settings: Hide From Command List and Command Chain !fight2
!fight2
@savefile@[RPG\Enemies\log\@user@Roll.txt,@rand@[0|@readfile@[RPG\Users\@user@Dex.txt]]] @if@[>=||@readfile@[RPG\Enemies\log\@user@Roll.txt]||@calc@[/|@readfile@[RPG\Users\@user@Dex.txt]|2]||@savefile@[RPG\Enemies\log\@user@Turn.txt,1]||@savefile@[RPG\Enemies\log\@user@Turn.txt,2]]
Note: This command may contain an endless loop, forcing DeepBot (And possibly, your entire system) into extreme lag. Force-close the application if this happens.
User stats are taken into account here. A roll takes place, based on User Dexterity. User must roll equal or greater than half of their Dexterity to attack, else the monster gets the attack.
Settings: Hide From Command List and Command Chain !fight3
!fight3
@if@[@readfile@[RPG\Enemies\log\@user@Turn.txt]||1||!fightdealtdamage||!fighttookdamage]
A value of "1" in the file "RPG\Enemies\log\@user@Turn.txt" indicates Player's attack. Else, a value of "2" indicates monster's attack
Settings: Hide From Command List
!fightdealtdamage
@savefile@[RPG\Enemies\log\@user@CurrentMonsterHP.txt,@calc@[-|@readfile@[RPG\Enemies\log\@user@CurrentMonsterHP.txt]|@readfile@[RPG\Enemies\log\@user@DamageDealt.txt]]]
The player deals damage to the monster.
Settings: Hide From Command List and Command Chain !checkmonsterhealth
!fighttookdamage
@savefile@[RPG\Users\@user@CurrentHealth.txt,@calc@[-|@readfile@[RPG\Users\@user@CurrentHealth.txt]|@readfile@[RPG\Enemies\log\@user@DamageTaken.txt]]]
The monster deals damage to the player.
Settings: Hide From Command List and Command Chain !checkplayerhealth
!checkmonsterhealth
@if@[<=||@readfile@[RPG\Enemies\log\@user@CurrentMonsterHP.txt]||0||!monsterdied||!fight2]
Checks if the monster is dead. (If they have equal or less than 0 HP)
If the monster is still alive, we loop back into !fight2, where we roll again to see who gets the next attack.
Settings: Hide From Command List
!checkplayerhealth
@if@[<=||@readfile@[RPG\Users\@user@CurrentHealth.txt]||0||!playerdied||!fight2]
Checks if the player is dead. (If they have equal or less than 0 HP)
If the player is still alive, we loop back into !fight2, where we roll again to see who gets the next attack.
Settings: Hide From Command List
!monsterdied
@user@ has slain the @readfile@[RPG\Enemies\log\@user@CurrentMonster.txt], and gained @readfile@[RPG\Enemies\log\@user@PointPot.txt]GP and @readfile@[RPG\Enemies\log\@user@ExpPot.txt]Exp! @editpoints@[@user@|@readfile@[RPG\Enemies\log\@user@PointPot.txt]] @savefile@[RPG\Users\@user@Exp.txt,@calc@[+|@readfile@[RPG\Users\@user@Exp.txt]|@readfile@[RPG\Enemies\log\@user@ExpPot.txt]]]
If the monster dies, then the player is awarded the Point pot, and the EXP pot. They don't get any health back. That's intentional.
The !fight2 loop ends here.
Settings: Hide From Command List and Command Chain !checklevel
!playerdied
@user@ has been slain by @readfile@[RPG\Enemies\log\@user@CurrentMonster.txt], and lost @readfile@[RPG\Enemies\log\@user@PointPot.txt]GP... @editpoints@[@user@|-@readfile@[RPG\Enemies\log\@user@PointPot.txt]] @savefile@[RPG\Users\@user@CurrentHealth.txt,@readfile@[RPG\Users\@user@MaxHealth.txt]]
If the player dies, they lose some Points, and get their health back.
Settings: Hide From Command List
!checklevel
@if@[>=||@readfile@[RPG\Users\@user@Exp.txt]||@readfile@[RPG\Users\@user@ExpToLevel.txt]||!levelup||]
When the player wins an encounter, they gain EXP. This is ran after a win to check whether they've gained enough EXP to level up.
Settings: Hide From Command List
!levelup
@savefile@[RPG\Users\@user@Level.txt,@calc@[+|@readfile@[RPG\Users\@user@Level.txt]|1]] @savefile@[RPG\Users\@user@Vit.txt,@calc@[+|@readfile@[RPG\Users\@user@Vit.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@End.txt,@calc@[+|@readfile@[RPG\Users\@user@End.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@Str.txt,@calc@[+|@readfile@[RPG\Users\@user@Str.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@Dex.txt,@calc@[+|@readfile@[RPG\Users\@user@Dex.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@Int.txt,@calc@[+|@readfile@[RPG\Users\@user@Int.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@Wis.txt,@calc@[+|@readfile@[RPG\Users\@user@Wis.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@Luc.txt,@calc@[+|@readfile@[RPG\Users\@user@Luc.txt]|@rand@[0|3]]] @savefile@[RPG\Users\@user@ExpToLevel.txt,@calc@[*|@readfile@[RPG\Users\@user@ExpToLevel.txt]|1.5]] @savefile@[RPG\Users\@user@Exp.txt,0]
Note: This command works, but not as completely intended.
Is the player has enough EXP to level up, this command will do that. It should be noted that this command does not work as intended.
What's supposed to happen is, each stat is set to increase a random amount between 0 and 3.
What really happens is, the random calculation is performed only once, and each stat is increased the same amount, between 0 and 3.
Settings: Hide From Command List
So, as of right now, that's all I've got.
The main issue revolves around the !fight2 loop, and I've banged my head on several walls trying to figure what's exactly causing issue there.
I'm sharing this because I think it's really cool, even though it's slightly broken. I'm hoping the community here can expand on this, and help make it much better.
-
Problem seems to lie in the !fightdealtdamage and !fighttookdamage commands.
The commands are executed, but never deduct health from the monster, or player.
This causes the health checks in the following commands to always fail, causing an endless loop back into !fight2.
Looking into a fix.
EDIT: Okay, so here's the fix.
I'm an idiot, and forgot to add in the damage calculations, so here they are.
First, edit !fight3 with this:
@if@[@readfile@[RPG\Enemies\log\@user@Turn.txt]||1||!playerturn||!monsterturn]
And add, !playerturn
@savefile@[RPG\Enemies\log\@user@DamageDealt.txt,@rand@[0|@calc@[+|@readfile@[RPG\Users\@user@Str.txt]|@readfile@[RPG\Users\@user@Int.txt]]]]
The player deals a random amount of damage, between 0 (a miss), and their Strength (Physical Damage) plus their Intelligence (Magical Damage).
Settings: Hide From Command List and Command Chain !fightdealtdamage
!monsterturn
@savefile@[RPG\Enemies\log\@user@DamageTaken.txt,@rand@[0|@calc@[*|@readfile@[RPG\Enemies\log\@user@CurrentMonsterLevel.txt]|5]]]
The monster deals a random amount of damage, between 0 (a miss), and five times their level.
Settings: Hide From Command List and Command Chain !fighttookdamage
The damage calculation could probably (definitely) be done better, but this gets the job done.
This gives a small bias to the monster for damage power, but the player has a slight bias when it comes to getting the attack.
The only thing that needs tweaking are the stat increases when leveling up.
Everything else from this point, will just be tweaking and adding onto what's here.
-
Thinking of adding 1 or 2 unique skills for each class.
Like, Assassins can steal points from other players.
Or, Clerics can heal and buff themselves or other players.
If anyone else has any ideas for this, let me know.
-
I just found this post, and is exactly what I was looking for. I will implement this and keep you updated on results.
-
I put in all the commands and it seems to work as intended. However, after each fight I get an Access Denied message at the end.
~KennyGString: !fight
@^illumiboti: kennygstring encounters a Level 2 Globetrotting Vadon, with 154HP.
@^illumiboti: kennygstring has slain the Globetrotting Vadon, and gained 0GP and 3Exp! Access denied
~KennyGString: !fight
@^illumiboti: kennygstring encounters a Level 2 Gangster Familiar, with 167HP.
@^illumiboti: kennygstring has been slain by Gangster Familiar, and lost 2GP... Access denied
Any ideas on that?
EDIT: You have run monsterdied and playerdied as elevated to stop getting the access denied message
-
I noticed whenever you lost a fight, you would lose GP. I also noticed its not keeping track of GP (at least I can't find where it's doing it), so I found this to be useless. I changed it to take away exp. It will go past 0 into the negatives, which I couldn't figure out how to stop. It doesn't seem to like adding positive numbers to negative numbers very well, but its a start, and not useless like taking GP was. Here's how I did it...
!playerdied
@user@ has been slain by a @readfile@[RPG\Enemies\log\@user@CurrentMonster.txt], and lost @readfile@[RPG\Enemies\log\@user@ExpPot.txt]Exp... @editpoints@[@user@|@readfile@[RPG\Enemies\log\@user@PointPot.txt]] @savefile@[RPG\Users\@user@Exp.txt,@calc@[-|@readfile@[RPG\Users\@user@Exp.txt]|@readfile@[RPG\Enemies\log\@user@ExpPot.txt] @savefile@[RPG\Users\@user@CurrentHealth.txt,@readfile@[RPG\Users\@user@MaxHealth.txt]]]]
I also added a cooldown, here's how I did it...
!fight
@if@[@readfile@[Cooldown/@user@.txt]||||!fightpass||!fightmath]
I changed your original fight command to this, run elevated.
!fight1
@if@[@readfile@[RPG\Users\@user@.txt]||1||!fightencounter||@user@, you must create a character first. Use the !rpg command.]
This is/was your original !fight command. The reason I did this was because I couldn't figure out how to get it to run !fightencounter after successfully passing the cooldown. So to make the code shorter, I just sepearted it into two parts. It'll make more sense later.
!fightmath
@if@[>=||@calc@[-|@unixtime@|@readfile@[Cooldown/@user@.txt]]||@readfile@[Cooldown/limit.txt]||!fightpass||!fightfail @calc@[-|@unixtime@|@readfile@[Cooldown/@user@.txt]]]
!fightpass
@savefile@[Cooldown/@user@.txt,@unixtime@]!fight1
So here's where I couldn't get it to trigger !fightencounter, and check to see if they've chose a class or not. So to make it easier I just make it into a different command.
!fightfail
I'm sorry @user@ but you can only fight every @readfile@[Cooldown/limit.txt] seconds. Prepare yourself and return in @calc@[-|@readfile@[Cooldown/limit.txt]|@target@] seconds.
I have lots more ideas if you would like to PM me. Thanks 8)
-
I noticed whenever you lost a fight, you would lose GP. I also noticed its not keeping track of GP (at least I can't find where it's doing it), so I found this to be useless. I changed it to take away exp. It will go past 0 into the negatives, which I couldn't figure out how to stop. It doesn't seem to like adding positive numbers to negative numbers very well, but its a start, and not useless like taking GP was. Here's how I did it...
My bad, I meant to change that to @pointsname@, but I can't edit the post here after a certain amount of time.
Our points were called GP, so they would just lose a bit of those points.
At the low levels, the point gains/losses are pretty insignificant, but the pot is generated based on their level, so as a user levels up, they gain/lose more points.
A cooldown is a great idea. I can't edit the old posts, like I said, so this thread may get a bit messy as we continue to add/edit things.
-
I've been working and tweaking this for a couple days now. I've added:
The option to be able to heal for the cost of channel currency with small, medium, large, and full heal being options. The heal checks to see if the player has made a character and if they have enough currency to purchase it.
Visual things like showing how much XP you need to level and how much HP you have remaining after a fight.
I've integrated mostly all messages into whispers except one that would be interesting to know, such as level ups will be announced in chat.
I did some balancing to it as well. Such as lowering the level chance encounter to 3 instead of 5. Being level 1 and encountering a level 5 and 6 wasn't really fun.
The next thing I'm working on is trying to get the values of each level up to be random. I see what you're saying how it just chooses a random value once, and then applies it to all of the @rand@ commands. I've talked to a couple DeepBot support guys and they didn't really know why either. One said that he has a command with a bunch of @rand@ commands in it, but its not consecutive like it is ours. They said that theirs had @if@ commands before it and it worked fine.
I planned on adding a store with weapons and armor as well. I've already made the initial !store and got it to work. But you can't buy anything just yet. I want to figure out why the @rand@ isn't picking a random value for each one before I implement it. It's doing the same thing as the level up. Do you have steam? It might be a lot easier to stay in contact through that if you're interested.
-
UPDATE: So I talked with a support guy today and he mentioned that in our @rand@ problem will be fixed in the next update. We'll have to change the commands from:
@rand@[1|10]
to
@rand@[1|10|unique]
If you add the unique tag at the end, it tells the bot to do what we want. If you don't have it, all the @rand@ values will be the same. So looking forward to that.
-
Good stuff. That update should solve the last of the issues.
Would just be adding/tweaking/updating from there.
I'm Wasabi Ice Cream on Steam, or
you can jump in our Discord server: https://discord.gg/0hT9PgQRD9Ua2mfE
-
To show how the @rand@ works, here is example:
(http://puu.sh/oohjb/b901408cc6.png)
Command in action:
(http://puu.sh/oohjz/4b70f62139.png)
-
Thanks so much for clearing it up and looking into it for us.
-
The latest update is causing the !fight command to crash now.
Can anyone else confirm?
-
Yeah it just happened in my stream today. Working on it tonight to see whats up
Here's the crash log:
16 May 20:51:27,354 - Error -Unable to log stream info.
Version : 0.9.1.0
Message : Unable to connect to the remote server
Stack Trace :
at System.Net.WebClient.UploadValues(Uri address, String method, NameValueCollection data)
at System.Net.WebClient.UploadValues(String address, NameValueCollection data)
at DeepBot.DeepBotAPI.DeepBotStreamInfo.#lgb.#hlb(Object )
------------------------------
18 May 09:20:30,087 - 0.9.1.0: Crashed Illegal characters in path.
18 May 09:20:30,105 - 0.9.1.0: Crashed at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__0(Object state)
18 May 09:21:22,980 - 0.9.1.0: Crashed Illegal characters in path.
18 May 09:21:22,980 - 0.9.1.0: Crashed at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__0(Object state)
18 May 09:21:49,697 - 0.9.1.0: Crashed Illegal characters in path.
18 May 09:21:49,697 - 0.9.1.0: Crashed at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__0(Object state)
18 May 09:22:06,256 - 0.9.1.0: Crashed Illegal characters in path.
18 May 09:22:06,256 - 0.9.1.0: Crashed at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__0(Object state)
18 May 19:14:24,643 - 0.9.1.0: Crashed Illegal characters in path.
18 May 19:14:24,643 - 0.9.1.0: Crashed at System.Runtime.CompilerServices.AsyncServices.<ThrowAsync>b__0(Object state)
-
From the small amount of testing I can do since the main !fight command causes a crash, I've noticed that...
@readfile@[RPG\Classes\@readfile@[RPG\Users\@user@Class.txt].txt]
No longer works. I'm not sure why, but it won't actually read the txt file. It just shows up as blank. For example:
@^illumiboti: kennygstring, you are a Level 1 . Use !stats to check your Stats. Use !fight to get started
It should say Barbarian after Level 1, but it doesn't.
-
I am trying to understand what is wrong exactly. Trying to reproduce what KennyGString is getting, but I don't know what @readfile@[RPG\Classes\.txt] would be and what it contains.
-
I am trying to understand what is wrong exactly. Trying to reproduce what KennyGString is getting, but I don't know what @readfile@[RPG\Classes\.txt] would be and what it contains.
The .txt files there just contain the names of the 5 different character classes, unless he's changed it.
So, in his example, his "RPG\Users\@user@Class.txt" would contain a "2", and the file "RPG\Classes\2.txt" would contain the string "Barbarian".
I've documented all the code on the first page. Ours differ a bit in a few places, but crash just the same.
-
What Wasabi said is correct. I haven't changed anything but maybe what things said, not the actual code itself.
-
Update to version v.0.9.2.1 seems to have fixed the issue. Everything seems to be working again. I'll keep updating with results.
-
Everything works, however whenever someones uses my heal command, it crashes the bot. Still does the command as intended though. I just get a popup box saying it crashed. Heres the log, if you need me to post my heal command setup, I will. It is 18 commands long though so, if this is all you need I think it would be easier.
22 May 13:35:48,496 - 0.9.2.1: Crashed Value cannot be blank
Parameter name: text
22 May 13:35:48,868 - 0.9.2.1: Crashed at Discord.Channel.SendMessage(String text)
at #W8b.#75b.#d7b(String #2q, String #Lc, Int32 #sac)
at DeepBot.ChanMsg.ChanMsg.#r8b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
22 May 13:36:01,662 - 0.9.2.1: Crashed Value cannot be blank
Parameter name: text
22 May 13:36:01,662 - 0.9.2.1: Crashed at Discord.Channel.SendMessage(String text)
at #W8b.#75b.#d7b(String #2q, String #Lc, Int32 #sac)
at DeepBot.ChanMsg.ChanMsg.#r8b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
22 May 13:36:36,162 - 0.9.2.1: Crashed Value cannot be blank
Parameter name: text
22 May 13:36:36,162 - 0.9.2.1: Crashed at Discord.Channel.SendMessage(String text)
at #W8b.#75b.#d7b(String #2q, String #Lc, Int32 #sac)
at DeepBot.ChanMsg.ChanMsg.#r8b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
22 May 13:37:55,555 - 0.9.2.1: Crashed Value cannot be blank
Parameter name: text
22 May 13:37:55,556 - 0.9.2.1: Crashed at Discord.Channel.SendMessage(String text)
at #W8b.#75b.#d7b(String #2q, String #Lc, Int32 #sac)
at DeepBot.ChanMsg.ChanMsg.#r8b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
22 May 13:38:16,364 - 0.9.2.1: Crashed Value cannot be blank
Parameter name: text
22 May 13:38:16,364 - 0.9.2.1: Crashed at Discord.Channel.SendMessage(String text)
at #W8b.#75b.#d7b(String #2q, String #Lc, Int32 #sac)
at DeepBot.ChanMsg.ChanMsg.#r8b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
-
Looks like there is certain text or message it can't send to Discord channel. Probably something with in the message of the command.
-
There's no fight steps, like you do !fightencounter and it just states you have slain or been slain but you can keep spamming that command even at low HP.
-
Looks like there is certain text or message it can't send to Discord channel. Probably something with in the message of the command.
It all works though. Every message. Every action. It just gives me that error every time.
There's no fight steps, like you do !fightencounter and it just states you have slain or been slain but you can keep spamming that command even at low HP.
I don't believe you correctly added the commands. You start with !fight, not !fightencounter. Also thats why I included a cooldown timer, to prevent spam. Yes you can fight with low HP, why would you not be able to?