Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

RavenStar

Members
  • Posts

    21
  • Joined

  • Last visited

    Never

RavenStar's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. ![](http://3es.com/lostvillage/img/forum_header.jpg) Ahoy fellow eclipsers. I'm the lead programmer for the [Lost Village](http://www.touchofdeathforums.com/smf/index.php/topic,66167.0.html) project and we're now in search of a pixel artist, one who isn't afraid to get down and dirty. **Lol, What is Lost Village?** Lost Village is a true RPG based in Ancient Korea, roleplay is a big aspect of the game where players can join in with the storyline. All features have been added by us (not bought from Robin's shop…) and we have plans for features that haven't been seen anywhere else. I urge you to take a peek at our WIP post found here; [http://www.touchofdeathforums.com/smf/index.php/topic,66167.0.html](http://www.touchofdeathforums.com/smf/index.php/topic,66167.0.html) **Okay cool, what do you want from me…?** We're looking for a pixel artist (or two) that want to be apart of a great game with some very unique ideas. You will have a passion for great quality material and willingness to work hard. **Awesome! Pick me!** We aren't after just anybody that claims they master the art of pixels, we want results! You'll need to present some of your previous work, whether this be sprites, tiles or other. Once we've viewed some of your work we will take it from there to discuss your future with our team. **How many positions?** We are currently seeking **two** artists to join our team who can split the workload. **Server?** We have our test server online 24/7, which isn't some crappy computer running in our basement like the rest of these teams have. We have a dedicated server in a data center on a proper 100MBit uplink, it's perhaps overkill for a small project like this but we're dedicated to the cause! **Where do I sign?** If you're interested in applying you can send a PM to myself or reply to this topic. Be sure to attach some examples of your work, it also wouldn't be a bad idea to tell us what styles you can do and what it is you hope to get out of joining this team. **What about the free hugs?** If you're successful in joining our team, we promise to love you long time and give you unlimited free hugs.
  2. There's always a way to do anything. The question is, what lengths will you go to achieve this? …edit the source code. You also didn't tell us what engine you're using.
  3. @Zetta: > cars are meant to crunch on impact; it decreases impulse This. My last accident was about 6 months ago, I had a full tank of gas too >_> The prick pulled out of a street as I went past, hit my side-on. Then a week after I go it back, I was parked on a hill and the hand-break of another car up the hill failed, rolled down and hit my car… such terrible luck. At least you're okay, that's the main thing. I know what you mean about the trance thing aswell, you sort of zone out and don't really notice what happens. Court for a traffic collision? That's shitty.
  4. Mines not stuck closed, but I can also agree it doesn't work to toggle it. Try going here, [http://www.touchofdeathforums.com/smf/index.php?theme=1](http://www.touchofdeathforums.com/smf/index.php?theme=1) Not sure if that'll work but it's worth a try?
  5. Aaah, an ini.. KILL IT! hehe. Nice edit Helladen, though I'd personally store the tradestate in the account file.
  6. @Sekaru: > I'd just like to point out that it says "THEOTHERPLAYER is not accepting trades" When "THEOTHERPLAYER" is trading you. Once a trade is initiated, both players have their trade turned off. Is that what you mean?
  7. I must say, this is a very nice edit. I was tossing around the idea of adding something similar, however I was just going to use the current map editor and make changes to limit its functionality based on the users access - wouldn't this be an easier solution? That way you don't need to add an extra form etc. Anyway, that's just my idea. **Excellent job once again**
  8. Ahoy, I'm RavenStar, my work includes mostly web design & server administration for big paying clients :D So because of that, I deal mostly with PHP & databasing (and ASP if the client demands it >. My education experience wasn't too bad, although I realised from a young age that the entire system was flawed. I got through college with a ~40% attendance and an A-level equivalent of CBB. I got accepted into every University placement I applied for, but I turned them down realising that I'm in not state to fully apply myself to a course whilst having to build up silly amounts of portfolio work & pro quals. > > **tl;dr:** I just dick around all day. I'm clever, but don't bother to do anything with it. Sounds like the same thinking as myself. At the moment I'm looking into moving overseas to make operations easier and for a bit of change of scenery.
  9. @tmoney: > I've repeated this tutorial to it's exact words at least 5 times + and every outcome seems to have an error. It needs to be a bit more user friendly because ive done everything right then some of the code snipplets dont belong in certain areas then you get it setup and it doesnt want to work or it gives you a Mismatch runtime error. > > Very buggy IMO it could just be me, but im pretty sure ive ran through this tutorial enough to know im not the one messing up. > > Re-Look it raven and maybe make the code a bit more user friendly that already has variables set, defined and code snipplets placed in the right place. Or maybe even add screenies, thanks for the hope though I thought I had myself a friends list :) but ill figure one out some day. I forgot you could write better tutorials and code… wait nevermind, you **can't**. I make things plenty user-friendly, I tell you where to go, what to find and what to put, I even put pictures of the IDE, wtf more do you require. Code is not user-friendly, if you're not comfortable with it then stop reading tutorials. To everyone else, sorry about the missing parts. I was awake for 30+ hours when I wrote this so I did forget to include a few things. I have the complete working code, which also includes some small error checking (such as if the player exists). Reason I haven't been able to reply and fix up the code for the past few days is I was out-of-country, back now but exhausted & jet-lagged so I'll update soonish :) **Giant thanks to 314piwm aswell, for helping all you kids.**
  10. @tmoney, There, I added an extra step to the tutorial in the first post, it's at the end highlighted in red. I was crazy tired when I wrote this so I forgot to add that :P Also, from what I gather in your first screenshot, you're using the wrong code. You've put``` HandleDataSub(SFriendList) = GetAddress(AddressOf HandleFriendsList) 'RavenStar ```when that is only meant for the client-side. Try re-reading the tutorial and figure out where you went wrong.
  11. Yeah, I've started on a completely different method where the friendslist is stored server-side. It's all working, just need to add ability to add/edit friends then I'll write up a tutorial for it. I'll edit the first post with the new tutorial once I'm done.
  12. @Robin: > Having a variable store the max number of friends doesn't make it dynamic, it makes it static. If it were dynamic, it'd store the names in a dynamic array and would automatically changed the UBound when new strings were added. > > Client-side friends lists are fairly unhelpful. You simply need to re-download the client and *POOF*, there goes your friends list. I suggest you look into creating a few packets and store the lists server-side. You should also look at how I've handled things like conversations. It'll show you how to handle dynamic arrays. > > Also, using 1 label per friend in the list is a poor way of doing things. You should look at how I've handled things like the inventory. You can run through the array of friends and draw the text to the actual picturebox without having to use a label. This'll sort out the control mess you'll be left with from this tutorial. It'll also show you how to efficiently detect mouse events on a picturebox. I agree it isn't truly dynamic, what I meant by this was it uses object controls to create labels to store the friend name. As for storing them server-side, this is something I've already started to work on however I thought I'd leave this short tutorial here for those that don't care. Thanks for the tip on drawing the text instead of using labels, this never crossed my mind. I'll check out the code. Cheers. Edit: I was aware of the control mess, but as mentioned it never crossed my mind to directly draw the text inside of my used method. ^_^ ty
  13. **Rewrote tutorial to use a new method for friends list, it's now stored server side. Edit: Crap I forgot to add a little code for the client-side, used to detect mouse click. Make sure you re-read the tutorial and add the missing part (if you haven't already got it).**
  14. This is an update of the previous tutorial I wrote, which I left at the very bottom of this post for reference, I recommend you use this new version :) This tutorial will show you how to implement a dynamic friends list into your game. The friends list is now stored on the server and each character has a different friends list. The player is able to bring up the friends list, click a name and it will start a PM to that person. You are also able to define the maximum friends a character is allowed. **CLIENT SIDE** Open up the IDE of frmMainGame. Find your picInventory panel, copy and paste it. When it asks if you want to make a control array, click no. Now name this new panel to picFriends Add a label inside this new panel and call it lblFriendAdd, this label is used to add new friends so give it a caption aswell. Your panel should look something like this; >! ![](http://i46.photobucket.com/albums/f142/onfiya/newfl1.gif) Now double click lblFriendAdd and add this code; ``` Dim n As Long strinput = InputBox("Friend's Name : ", "Add Friend") If StrPtr(strinput) = 0 Or strinput = vbNullString Then Exit Sub n = CLng(Trim$(strinput)) Call SendAddFriend(n) ``` Now goto modClientTCP and add this to the very bottom; ``` 'RavenStar 'Add new friend Public Sub SendAddFriend(ByVal Name As String) Dim Buffer As clsBuffer Set Buffer = New clsBuffer Buffer.WriteLong CAddFriend Buffer.WriteLong Name SendData Buffer.ToArray() Set Buffer = Nothing End Sub ``` Next goto modConstants and find this; ``` ' Bank constants ``` Add this code **above** it; ' Friend List constants - RavenStar Public Const FLTop As Byte = 32 Public Const FLLeft As Byte = 32 Public Const FLOffsetY As Byte = 24 Open up modGlobals, add this at the very bottom; ``` ' Used for friend list - RavenStar Public FRIENDS_INDEX(1 To 8) As String Public FriendX As Long Public FriendY As Long ``` Open modEnumerations, find this; ``` ' Make sure SMSG_COUNT is below everything else SMSG_COUNT End Enum ``` Add this **above** it; ``` SFriendList 'RavenStar ``` Then find this; ``` ' Make sure CMSG_COUNT is below everything else CMSG_COUNT End Enum ``` Add this **above** it; ``` CAddFriend 'RavenStar ``` Goto modHandleData, find this; ``` HandleDataSub(STradeStatus) = GetAddress(AddressOf HandleTradeStatus) ``` Add this below it; ``` HandleDataSub(SFriendList) = GetAddress(AddressOf HandleFriendsList) 'RavenStar ``` Then goto the very bottom of modHandleData and add this; ``` 'Friends List - RavenStar Private Sub HandleFriendsList(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long) Dim Buffer As clsBuffer Dim ALL_FRIENDS As Long, I As Long, Y As Long, X As Long Dim FriendName As String Set Buffer = New clsBuffer Buffer.WriteBytes Data() frmMainGame.picFriends.Cls For I = 1 To UBound(FRIENDS_INDEX) Y = FLTop + (FLOffsetY * (I - 1)) X = FLLeft FriendName = Buffer.ReadString FRIENDS_INDEX(I) = FriendName DrawText frmMainGame.picFriends.hDC, X, Y, FriendName, QBColor(White) Next Set Buffer = Nothing End Sub ``` Open the code for frmMainGame, add this to the very bottom; **I originally forgot to add this to the tutorial re-write, so if you used this tutorial before I added this, make sure you add it now.** ``` Private Sub picFriends_DblClick() Dim friendnum As Long friendnum = IsFriendName(FriendX, FriendY) If friendnum 0 Then txtMyChat.Enabled = True txtMyChat.text = "!" & FRIENDS_INDEX(friendnum) & " " txtMyChat.SetFocus txtMyChat.SelStart = Len(txtMyChat.text) Exit Sub End If End Sub Private Function IsFriendName(ByVal X As Single, ByVal Y As Single) As Long Dim tempRec As RECT Dim I As Long IsFriendName = 0 For I = 1 To UBound(FRIENDS_INDEX) With tempRec .Top = FLTop + (FLOffsetY * (I - 1)) .Bottom = .Top + 16 .Left = FLLeft .Right = .Left + (picFriends.width - .Left) End With If X >= tempRec.Left And X = tempRec.Top And Y ! This tutorial will guide you through the process of adding a dynamic friends list to your game. The friends list is stored locally so there is no server-side edits required. >! What do I mean by dynamic? Basically this code will use a control array to create the extra labels (that store the friends name) for you, so if you want to adjust how many friends a player can store, you simply change 1 variable and done! >! Lets get started! >! **CLIENT SIDE** >! Goto frmMainGame and find your picCharacter, this is where your characters name & stats are displayed (or you can use any of the other panels if you'd like). >! Now copy and paste this panel, it will ask you if you want to create a control array, click no. Now delete everything inside that panel so it's blank (see picture for example) and change the name of the panel to picFriendsList. >! >! ![](http://i46.photobucket.com/albums/f142/onfiya/coding/FL1.gif) >! Next create a label inside the picFriendsList panel and call it lblFriendName. Copy this label then paste it inside the picFriendsList panel. It will ask you if you want to create a control array, click yes! Now delete the newly created label, so you're left with only one label inside the panel. (see picture for example) >! >! ![](http://i46.photobucket.com/albums/f142/onfiya/coding/FL2.gif) >! Next, change the visibility of the label to FALSE. (see picture for example) >! >! ![](http://i46.photobucket.com/albums/f142/onfiya/coding/FL3.gif) >! Goto frmMainGame code and find; ``` Private Sub Form_Load() ``` Add this within the Form_Load sub; (Note: In the middle of this code where it has "For I = 1 To 4" simply change the 4 to the maximum number of friends you want to appear on the Friends List) ``` Dim FileName As String Dim FriendsFile As Integer Dim TextOfLine As String Dim I As Integer >! FileName = App.Path & "\Data Files\friendslist.txt" FriendsFile = FreeFile Open FileName For Input As FriendsFile For I = 1 To 4 ' ! Next, double click the label we made earlier and add this code; ``` txtMyChat.text = "! " & lblFriendName(Index).Caption & " " txtMyChat.Enabled = True txtMyChat.SetFocus >! ``` >! You're all done! >! Now a few notes.. -You'll need to figure out where you want to put the Friends List panel and add any hide/show code for it if you desire. -Make sure you create a text file called "friendslist.txt" inside your "data files" folder. -You will have to manually edit the friendslist.txt file, one name per line. -When you click a persons name on the Friends List it will populate your chat bar with -The friend names will appear under where you created the label earlier (even though it's not visible) >! **I may later on add a tutorial on how to allow the player to edit their friends list from within the game, so they don't have to manually do it… I'll reserve the next post for that tutorial.** >! Here's a screenshot of how mine ended up :) ![](http://i46.photobucket.com/albums/f142/onfiya/coding/FL4.gif)
  15. Hi all, I'm new here and thought I'd kick it off with a tutorial. This is my first tutorial I've ever written and I've only been using EO for 2 days now, so don't be too harsh with me :rolleyes: This tutorial will alter the trade system currently in EO. Instead of having to accept a trade, you simply enable trade then anyone can open the trade window with you. Once the trade is over, it disables trade. I reckon this makes trading easier, where if there's a heap of players around, you don't need to find the one that wants to trade and then accept. **CLIENT SIDE** You need to create a button that will be used to toggle your trade state, so open frmMainGame and add a label somewhere (I put it in picCharacter - where your player name/stats are). Name the label lblTradeToggle Double click the label and add the following code; ``` Private Sub lblTradeToggle_Click() TradeState = Not TradeState Call SendTradeState End Sub ``` In modGlobals, find this; ``` ' trading Public TradeTimer As Long Public TradeRequest As Boolean Public InTrade As Long Public TradeYourOffer(1 To MAX_INV) As PlayerInvRec Public TradeTheirOffer(1 To MAX_INV) As PlayerInvRec Public TradeX As Long Public TradeY As Long ``` and add this below it; ``` Public TradeState As Boolean ``` In modEnumerations, inside of Public Enum ClientPackets, find this; ``` CDeclineTrade CTradeItem CUntradeItem ``` add this below it; ``` CTradeState ``` In modClientTCP, add this to the very bottom; ``` 'RavenStar Public Sub SendTradeState() Dim buffer As clsBuffer Set buffer = New clsBuffer buffer.WriteLong CTradeState buffer.WriteLong TradeState SendData buffer.ToArray() Set buffer = Nothing End Sub ``` That's it for the client side, now for the server side! **SERVER SIDE** In modTypes, inside of Public Type TempPlayerRec, find this; ``` ' trade TradeRequest As Long InTrade As Long TradeOffer(1 To MAX_INV) As PlayerInvRec AcceptTrade As Boolean ``` add this below it; ``` TradeState As Byte 'RavenStar ``` In modEnumerations, inside of Public Enum ClientPackets, find this; ``` CDeclineTrade CTradeItem CUntradeItem ``` add this below it; ``` CTradeState ``` In modHandleData, inside of Public Sub InitMessages(), find this; ``` HandleDataSub(CUntradeItem) = GetAddress(AddressOf HandleUntradeItem) ``` add this below it; ``` HandleDataSub(CTradeState) = GetAddress(AddressOf HandleTradeState) ``` At the bottom of modHandleData, add this; ``` 'RavenStar Sub HandleTradeState(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long) Dim buffer As clsBuffer Dim newTradeState As Boolean Set buffer = New clsBuffer buffer.WriteBytes Data() newTradeState = buffer.ReadLong Set buffer = Nothing TempPlayer(Index).TradeState = newTradeState End Sub ``` In modHandleData, find Sub HandleTradeRequest, replace the entire sub with this; ``` Sub HandleTradeRequest(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long) Dim buffer As clsBuffer Dim x As Long Dim y As Long Dim I As Long Dim tradeTarget As Long Set buffer = New clsBuffer buffer.WriteBytes Data() x = buffer.ReadLong y = buffer.ReadLong Set buffer = Nothing ' Prevent subscript out of range If x < 0 Or x > Map(GetPlayerMap(Index)).MaxX Or y < 0 Or y > Map(GetPlayerMap(Index)).MaxY Then Exit Sub End If ' Check for a player For I = 1 To MAX_PLAYERS If IsPlaying(I) Then If GetPlayerMap(Index) = GetPlayerMap(I) Then If GetPlayerX(I) = x Then If GetPlayerY(I) = y Then tradeTarget = I End If End If End If End If Next ' make sure we don't error If tradeTarget MAX_PLAYERS Then Exit Sub ' can't trade with yourself.. If tradeTarget = Index Then PlayerMsg Index, "You can't trade with yourself.", BrightRed Exit Sub End If 'RavenStar If TempPlayer(tradeTarget).TradeState Then ' clear the trade timeout clientside SendClearTradeTimer Index ' clear the tradeRequest server-side TempPlayer(Index).TradeRequest = 0 TempPlayer(tradeTarget).TradeRequest = 0 ' set that they're trading with each other TempPlayer(Index).InTrade = tradeTarget TempPlayer(tradeTarget).InTrade = Index ' clear out their trade offers For I = 1 To MAX_INV TempPlayer(Index).TradeOffer(I).Num = 0 TempPlayer(Index).TradeOffer(I).Value = 0 TempPlayer(tradeTarget).TradeOffer(I).Num = 0 TempPlayer(tradeTarget).TradeOffer(I).Value = 0 Next ' Used to init the trade window clientside SendTrade Index, tradeTarget SendTrade tradeTarget, Index ' Send the offer data - Used to clear their client SendTradeUpdate Index, 0 SendTradeUpdate Index, 1 SendTradeUpdate tradeTarget, 0 SendTradeUpdate tradeTarget, 1 'Now that we've started trading, lets turn off trading for both players - RavenStar TempPlayer(Index).TradeState = False TempPlayer(tradeTarget).TradeState = False Exit Sub Else PlayerMsg tradeTarget, Trim$(GetPlayerName(Index)) & " is not accepting trades.", BrightGreen End If SendClearTradeTimer Index End Sub ``` All done! :) Now, if you want to trade with someone, they have to have their trade status enabled by pressing the label we made earlier. Once it's on, you can hit trade, click their character and the trade window will instantly open. You'll have to enable your trade before anyone else can initiate a trade with you. Once a trade has started, both players trade status is disabled, for safety measures :) There's probably a few parts that could do with some optimisation but if you care about that then you can do it. Let me know how it goes, would be good to know if anyone ends up using this. :azn:
×
×
  • Create New...