Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Iambian

Pages: 1 ... 32 33 [34] 35 36 ... 52
496
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 13, 2010, 06:44:25 pm »
Sounds nice!
I like the little include idea.  That's pretty neat.
It is, but such an idea only really works when you've figured out conclusively that the stuff you want out of it is *all* that you will ever need. It becomes a pain (at least on my end) to have to update the small include file if you want to put in another romcall or some other reference from ti83plus.inc

A little more on topic, I spent a few more minutes up at my college's math lab (not for math. For a guy who works there that is interested in the game) debugging a few things so that the app will initialize. The problem involved not updating the pages correctly in the one file I thought I updated. It now works. Still, I've gotta start moving a few files around and update the project to make use of the newly-created page.

EDIT: Just posting the black box that involves the compile process. It takes just slightly over a second to work. A little less if the system's been "warmed up". You can see where I put in that extra page.

OFF TOPIC EDIT: I love the thumbnailing feature that this forum seems to provide. Very friendly on people that run dial-up or at dial-up speeds (school WiFi)

497
Escheron: Shadow over Ragnoth / Re: E:SoR Synopsis
« on: January 13, 2010, 01:55:19 pm »
The post was actually constructed by Zera from an email that he sent me. He asked me on chat last "night" to post it here for him.

Gotta give a little background for the game. Still. I have to give credit where credit is due. (I feel... wrong... if I don't)

498
Escheron: Shadow over Ragnoth / E:SoR Synopsis
« on: January 13, 2010, 12:20:20 am »
Escheron: A Tale of Political Intrigue

Eons ago, before the time of man, a powerful entity known as Yaldabaoth brought forth into existence a pantheon of gods. Each of these gods was conscripted into his service, and each was given the responsibility of governing the various elements of the mortal sphere. Using their powers of creation, the pantheon gave birth the world of Escheron, and the mortal men who would walk its surface.

Mankind flourished on Escheron, and built many lustrous kingdoms. With the passing of time, mankind began to approach a level of unparalleled technological progress. The pantheon's governance was no longer necessary to protect and sustain the mortal sphere, and so Yaldabaoth recalled their powers. Many gods did not wish to surrender their powers so willingly, leading to a great conflict among the realm of the gods. All but few gods were destroyed, and the essence of their powers was left lingering above the heavens.

Many of man's kingdoms fought to claim this power for themselves. Some succeeded, and Escheron saw an age of conquest that set a precedent for centuries of suffering and conflict. The Arcanians -- the self-appointed guardians of these powers -- finally came into their possession, and sealed themselves away in the ruins of the realm of the gods for all eternity. The conflict had finally come to a rest. Time passed, and such accounts were held only to be legends of a past mythology...

Centuries later, the kingdom of Asnoth -- and the neighboring kingdom of Ragnoth to the South -- have come into a proclamation of war. Lord Leonis of Asnoth has become paranoid of the secrets held by the descendents of the Arcanian people of Ragnoth. Fearing they might one day break the seal on the realm of the gods and unleash the gods' power once more, he has petitioned a figure known only as the Shadow Lord to seek-out the secrets of the Arcanians and eradicate their kind.

Enter Maya Anson: a young girl, and the last descendant of the Arcanians. 10 years ago, her home village was taken under the military occupation of Asnoth's Royal Guard, and her family slaughtered by the forces of the Shadow Lord. She has hence been orphaned into civil resistance, and is now leading a campaign to liberate her village from the occupation, once and for all.

Will mankind's lust for power doom history to repeat itself? Just what are the secrets of the Arcanians? What destiny awaits Maya -- the final heir to their knowledge? Who is the Shadow Lord, and what role does he play in the affairs of Asnoth? The answers await you in... Shadow over Ragnoth

499
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 12, 2010, 08:59:30 pm »
Not all of the data that can be included in the app actually *is* in the app. The data that remains is the character/NPC dialog data, treasure chest data, enemy statistical data, large character portraits, event data, and a few other goodies that needs to go in, like game ending sequences and your ubiquitous world map.

Not to mention all the code that drives all of it. But on the bright side, much of the dialog data will be compressed so many kilobytes of text will condense to something much smaller. ty, pucrunch :P

The robot side story (Full Metal mode) might drive it to a 96KB app, but it probably won't since it will use so many of the same assets from the main story.

EDIT: The pause menu system is finally in. The merits are now calculated and the app's really, REALLY quickly running out of space. A few bytes under 5KB remains. Gotta go ahead and expand the app.

EDIT 2: Okay. The expansion was made. A few definitions were changed. I reduced the dependency on the age-old ti83plus.inc and made a minimalistic file that retains just four lines copied from the same thousand-line include file. The app compiles far faster. Thus, developing with my compile-happy finger will be that much faster. Oh, how I could go on and on, but yeah. :)

EDIT 3 : Alright. The file's a fair bit more than 4 lines now, but only because I wanted to have everything I'll ever need in that one file. The app uses 11 romcalls (2 are numerically defined) and one "bjump" (JForceCmdNoChar). "contrast" is used only during initialization. "appbackupscreen" and "plotsscreen" are referenced all over the place in the app. Then there's the whole "#define equ .equ" and "#define EQU .equ". Nothing else. All romcalls are made when the app is starting up and shutting down.

500
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 12, 2010, 01:55:51 am »
Finished up with the equip menu. Also started working on the status menu. For your convenience, you can access the status menu right from the equip menu by using the DEL key as sort of a shortcut. Because you know... you want to see the immediate effect of what you equipped, right?

The empty space in the status menu is where a large portrait is going to be going. I haven't really put that stuff in yet.

On another note, the app has 5.6KB collectively remaining in its 4 pages. I may actually have to expand the app to 80KB to get myself another 16KB.

501
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 07, 2010, 02:53:25 pm »
Okay. Humpty Dumpty is back together again. Just making sure the pieces are securely in their places.

The save/load prompt is back in place and works properly. The character select menu is back in place. Just have to debug some of the other menus, like the inventory system and the spell select. The menu system now features full backward memory, which means it'll remember where you were when you go back (or up) one level. Makes it easier to navigate. Unfortunately, it can't remember what you did when you go forward. I don't plan on putting that feature in since menus share so many memory areas.

EDIT: A small short story on yesterday's woes: When I first put it all back together, the thing simply didn't work for whatever reason, but I knew it isn't the menu system itself since the opening screen worked but the game froze on the character select menu and the save/load menu. A little while into trying to trace the source of the problem, I found that the routine responsible for converting a binary number into ASCII for displaying was bugged. The final iteration was trapped in an infinite loop. Fun stuff. After that, I adjusted the display since writing things to the screen is based off of relative positions instead of absolute positions. That was another major change internally.

EDIT 2: Pretty soon, I'm gonna have to make myself a screenshit threat. I mean... yeah. IRC really is catching up. Thanks DJ Omnimaga :)

502
News / Re: Ztrumpet joins Omnimaga staff.
« on: January 07, 2010, 12:40:38 am »
Congratulamations on making it on teh team, ztrumpet!

(P.S. "Congratulations" is misspelled for your amusement)

503
Computer Projects and Ideas / Re: mIRC Lag script
« on: January 06, 2010, 12:42:37 am »
A small walkthrough of what I have in the script. These will be described as what's on the first line defining the function.

In the on START event, the script sets up a directory for keeping track of various things that go on in the channels, like who joins it, what their host masks are, and what names they've used in the past. The echo's you see there just relay information back to the user. I intended on putting more stuff there, but I just never got around to it.

In the on CONNECT event, it builds hash tables for the network you've connected to. Lists that relate addresses to nicks and nicks to addresses.

The alias "connecthashmake" just makes the file smaller on my end. I'm a freak like that. All it does is reload a previous occurance of the file if it exists (so it remembers stuff from session to session).

The on DISCONNECT event cleans up the script and stashes away the state of these hash tables to file so it can be recalled the next time you load mIRC. These files will just continue to grow as more poeple come in.

The on EXIT event cleans the script up so there's very little in the variables section when mIRC shuts down.

The on JOIN event is where things really get interesting. The first block of text is testing to determine if anyone on the channel has joined under a different nick. The second block performs checks to determine if any newcomer already has a presence in the channel under a same hostmask. This may get annoying if the person joins from some "legit" proxy, like Mibbit. So ignore it if it gets annoying. The last block of text performs actions if you're the one joining a channel. It collects information about the channel so mIRC's internal lists are filled.

The on SIGNAL:joinsect event collects from the third function of the on JOIN event. Can't do everything at once or the server might think you're flooding.

The on NICK/QUIT/PART events record to the hash tables the last thing the person did.

The on RAWMODE event ... uhm. I think I was trying to determine if you obtained a mode change or something. That part remains incomplete.

The on NOTICE is the recipient of the lag timer. It hides certain things from you so you don't get bombarded by messages to yourself. It's also where the autolag warning kicks in.

The raw commands shown next intercept replies to the /who command, which the script automatically performs each time you join a channel. If you get annoyed by the output, you can try putting a "haltdef" after the if statement underneath "raw 352".

The menu nicklist fills out the context menu if you right click on the nicklist. If you can see the options, most of it is self-explanatory.

The menu channel is similar to the nicklist, except it's what shows if you right-click on the channel window. Pretty much self-explanitory there.

The menu menubar shows up in the menubar. The two options let you start the lag timer if you're connected to a server. Each lag timer is different depending on what server window/channels you have active. The "Output Hash Tables" lets you see the contents of the hash tables that are there. Mostly for debugging purposes.

The menu query is self-explanitory. It's what happens if you right-click while in a PM.

The menu status is what happens when you right-click in the status (server/private) window. Lets you set modes on yourself.

Ooookay. The aliases section. All of these aliases are used internally, so don't try to call them yourself.

The massmode alias isn't used but the listmode alias sure is. Lets you apply modes to any you've selected in the nicklist. Supports multiple selections (by Ctrl+click or Shift+click). The modeall alias is called by the previous two aliases to perform the function.

The renderhashtables alias creates a new window and dumps the contents of the hash tables there.

The updatehashtables alieas is a fair bit of work that rebuilds the contents of the hash tables given a newcomer's nick and hostmask. Relations are created in this phase.

The clonecheck alias is used in the menu channel to output the names of any clones (people with the same hostmask) and some of their information, like who's who and what their hostmask is.

And... that's it. I guess.

504
Computer Projects and Ideas / mIRC Lag script
« on: January 05, 2010, 12:44:52 am »
FULL POST EDIT: Forget what I said earlier. I'm just gonna dump the entire script here. It's what I have and it's what I run. A few things don't work quite yet and some things might get a little annoying, but hey. If you don't want it, just clear it out of your mIRC if you loaded it.

This code goes in the "Remote" section of your scripts. Before you do it, though, make sure something is in the menubar part of your "Popups" section of the scripts. I happen to have just "DevMan" as the first line and that's it, but you can have anything you want. All it does is puts a menu option between your "Tools" and "Window" in the menubar that matches whatever you put in.

Code: [Select]
on *:START: {
  echo -a -- Setting up scripts
  if (!$exists(htabs)) { mkdir htabs }

  echo -a -- Finished setting up scripts  

}

on *:CONNECT: {
  set %z.htmp adrnick $+ $network | connecthashmake
  set %z.htmp nickadr $+ $network | connecthashmake
  unset %z.htmp
}
alias connecthashmake {
  hmake %z.htmp 100
  if ($exists(htabs\ $+ %z.htmp)) { hload %z.htmp htabs\ $+ %z.htmp }
}

on *:DISCONNECT: {
  unset %z.chmod.*. $+ $network
  timer $+ conn $+ $cid off
  set %z.htmp adrnick $+ $network | hsave %z.htmp htabs\ $+ %z.htmp | hfree %z.htmp
  set %z.htmp nickadr $+ $network | hsave %z.htmp htabs\ $+ %z.htmp | hfree %z.htmp
  unset %z.htmp
}

on *:EXIT: {
  echo -a Cleaning up scripts
  unset %z.chmod*
  echo -a Done
}

;Performing who on join allows population of address list checker
;$timestamp
on ^*:JOIN:*: {
  updatehashtable $site $nick
  set %z.htab.adni adrnick $+ $network
  if (($gettok($hget(%z.htab.adni,$site),2,32)) && ($nick != $me)) {
    set %z.htab.time $gettok($hget(%z.htab.adni,$site),3,32)
    set %z.htab.nick $gettok($hget(%z.htab.adni,$site),2,32)
    if ($nick != %z.htab.nick) {
      echo $target  $+ $color(join) $+ $timestamp * $nick has joined $chan $+ , using %z.htab.nick ( $+ $duration($calc($ctime - %z.htab.time)) $+ ) ago.
      haltdef
    }
  }
  unset %z.htab*

  if (($nick != $me ) && ($ialchan($address($nick,2),$chan,0) > 1 )) {
    var %a $ialchan($address($nick,2),$chan,0)
    while (%a) {
      if ($nick != $ialchan($address($nick,2),$chan,%a).nick) {
        set %b %b $ialchan($address($nick,2),$chan,%a).nick
      }
      dec %a
    }
    echo $target  $+ $color(join) $+ $timestamp * $nick has joined $chan $+ , with clones $calc($ialchan($address($nick,2),$chan,0)-1) clone $+ $iif($calc($ialchan($address($nick,2),$chan,0)-1) > 1,s) ( %b ) $address($nick,2)
    unset %b
    haltdef
  }
  if ($nick == $me) {
    .who $chan
    .timerj1 $+ $chan 1 2 .signal joinsect 1 $chan
    .timerj2 $+ $chan 1 2 .signal joinsect 2 $chan
    .timerj3 $+ $chan 1 4 .signal joinsect 3 $chan
    .timerj4 $+ $chan 1 6 .signal joinsect 4 $chan
    set %z.chmod. $+ $chan $+ . $+ $network $iif($nick($chan,0) == 1,3,0)
    ;set %z.chmod. $+ $chan $+ . $+ $network $pos(+%@&~,$left($nick($chan,$me).pnick,1),1)
  }
}

on *:SIGNAL:joinsect: {
  if ($1 == 1) { set %z.chmod. [ $+ [ $2 ] $+ ] . $+ $network $iif($nick($chan,0) == 1,3,0) }
  if ($1 == 2) { mode $2 b }
  if ($1 == 3) { mode $2 e }
  ;  if ($1 == 4) { mode $2 i }
}

on *:NICK: {
  updatehashtable $site $newnick
}

on *:QUIT: {
  updatehashtable $site $nick $ctime
}

on *:PART:*: {
  updatehashtable $site $nick $stime
}


on *:RAWMODE:*: {

  if ($me == $2) {
    ;Sets variable for channel on network for mode number
    set %z.chmod. $+ $chan $+ . $+ $network $pos(+%@&~,$left($nick($chan,$me).pnick,1),1)
  }
}

on ^*:NOTICE:*:*: {

  if (($1 == $me) && ($3 == $null)) {
    echo -a ::: (LAG) : ( $+ $calc($uptime(mirc)-$2) $+ )msec.
    haltdef
  }
  if (($1 == $scid($4).me) && ($3 != $null)) {
    if ($calc($uptime(mirc)-$2) > 10000) {
      echo -a ::: (AUTOLAG WARNING) There is too much lag on ( $+ $3 $+ ). ( $+ $calc($uptime(mirc)-$2) $+ )msec.
    }
    haltdef
  }

}

;########################################################################
; RAW COMMAND INTERCEPTS FOR REMOTE SCRIPT MAINTENANCE

;RPL_WHOREPLY
raw 352:*: {
  if ($chr(35) isin $2) { updatehashtable $4 $6 }

}
;RPL_ENDOFWHO
raw 315:*: {

}


;########################################################################
; MENUS SECTION OF REMOTE SCRIPT


menu nicklist {
  UserInfo
  .Get Info:/uwho $$1
  .Whois:/whois $$1
  .Query:/query $$1
  -
  Controls:
  .$iif(%z.chmod. [ $+ [ $chan ] $+ . $+ [ $network ] ] > 4,$iif($nick($chan,$1,q) != $null,Remove Owner,Set Owner)):$listmode(q,$iif($nick($chan,$1,q) != $null,-,+),$chan)
  .$iif(%z.chmod. [ $+ [ $chan ] $+ . $+ [ $network ] ] > 3,$iif(& isin $nick($chan,$1).pnick,Remove Protect,Set Protect)):$listmode(a,$iif(& isin $nick($chan,$1).pnick,-,+),$chan)
  .$iif(%z.chmod. [ $+ [ $chan ] $+ . $+ [ $network ] ] > 2,$iif($1 isop $chan,Remove Op,Set Op)):$listmode(o,$iif($1 isop $chan,-,+),$chan)
  .$iif(%z.chmod. [ $+ [ $chan ] $+ . $+ [ $network ] ] > 2,$iif($1 ishop $chan,Remove HalfOp,Set HalfOp)):$listmode(h,$iif($1 ishop $chan,-,+),$chan)
  .$iif(%z.chmod. [ $+ [ $chan ] $+ . $+ [ $network ] ] > 1,$iif($1 isvoice $chan,Remove Voice,Set Voice)):$listmode(v,$iif($1 isvoice $chan,-,+),$chan)
  CTCP/DCC:
  .Get VERSION: ctcp $$1 VERSION
  .Get TIME: ctcp $$1 TIME
  .Get PING: ctcp $$1 PING
  .Custom CTCP: ctcp $$1 $$?="Custom CTCP command:"
  .Chat via DCC: dcc chat $$1
  .Send via DCC: dcc send $$1

}
menu channel {
  Channel Modes: channel
  Channel CTCPs
  .Send PING to $chan : ctcp $chan PING
  .Send TIME to $chan : ctcp $chan TIME
  .Send VERSION to $chan : ctcp $chan VERSION
  Check Lag: .notice $me $me $uptime(mirc)
  Check for clones: clonecheck
}

menu menubar {
  $iif($scid($cid).status == connected,$iif($timer(conn $+ $cid) == $null,Start Lag Timer,Stop Lag Timer)): { $iif($timer(conn $+ $cid) == $null, .timer $+ [ conn $+ [ $cid ] ] 0 30 scid [ [ $cid ] ] .notice $!me $me $!uptime(mirc) $!network $cid, .timer $+ conn $+ $cid off ) | echo -a Timer on $network is now $iif($timer(conn $+ $cid) == $null,Off,On) }
  Output Hash Tables:renderhashtabs

}

menu query {
  Check Lag: .notice $me $me $uptime(mirc)
}

menu status {
  Check Lag: .notice $me $me $uptime(mirc)
  User Modes
  .$iif(i isincs $usermode,Remove User Invisible,Set User Invisible):$iif(i isincs $usermode, mode $me -i, mode $me +i)
  .$iif(p isincs $usermode,Remove Channel Invisible,Set Channel Invisible):$iif(p isincs $usermode, mode $me -p, mode $me +p)
  .$iif(d isincs $usermode,Remove Deaf,Quit listening to channel chatter):$iif(d isincs $usermode, mode $me -d, mode $me +d)
  .$iif(w isincs $usermode,Don't listen to Wallops,Listen to Wallops):$iif(w isincs $usermode, mode $me -w, mode $me +w)
  .$iif(s isincs $usermode,Don't listen to server notices,Listen to server notices):$iif(s isincs $usermode, mode $me -s, mode $me +s)
  .$iif(R isincs $usermode,Allow PRIVMSGs/NOTICEs from Unregistered users,Don't allow PRIVMSGs/NOTICEs from Unregistered users):$iif(R isincs $usermode, mode $me -R, mode $me +R)
  .$iif(T isincs $usermode,Recieve CTCPs,Filter Out CTCPs):$iif(T isincs $usermode, mode $me -T, mode $me +T)
  .$iif(W isincs $usermode,Don't see WHOIS requests,See WHOIS attempts (IRCops Only)):$iif(W isincs $usermode, mode $me -W, mode $me +W)
  Stats
  .Check Banversion (B):stats B
  .Check Bad Words List (b):stats b
  .Check Spam Filter(f):stats f
  .Check G-Line/GZ-Line list:stats g
  .Check K-Line list:stats K
  .Check Oper block list:stats O
  .Check Shun list:stats s
  .Check Traffic list:stats T
  .Check U-Line list:stats U
  .Check V-Host list:stats V



}

;########################################################################
; ALIASES SECTION OF REMOTE SCRIPT

alias massmode { if ( $1 == $null ) { return }
  if ($1 !isin eb) {
    var %_a $nick($3,0)
    unset %_b
    while (%_a) { set %_b %_b $nick($3,%_a) | dec %_a }
    var %_a %_b | unset %_b
    modeall $3 $1 $2 %_a
  }
  else {
    var %_a $nick($3,0)
    unset %_b
    while (%_a) { set %_b %_b $address($nick($3,%_a),2) | dec %_a }
    var %_a %_b | unset %_b
    modeall $3 $1 $2 %_a
  }
}


;Arg1 = string of mode (w/o + or -, one letter ). Arg2 = String of change ( this is + or - ). Arg3 = channel name
alias listmode { if ( $1 == $null ) { return }
  if ($1 !isin eb) {
    var %_a $nick($3,0)
    unset %_b
    while (%_a) { set %_b %_b $snick($3,%_a) | dec %_a }
    var %_a %_b | unset %_b
    modeall $3 $1 $2 %_a
  }
  else {
    var %_a $nick($3,0)
    unset %_b
    while (%_a) { set %_b %_b $address($snick($3,%_a),2) | dec %_a }
    var %_a %_b | unset %_b
    modeall $3 $1 $2 %_a
  }
}

alias modeall {
  var %_a $modespl
  var %_c $calc($0 - 3)
  while ( %_c > 0 ) {
    var %_d %_a
    if ( %_c < %_d ) { var %_d %_c }
    var %_b %_d | var %_g %_c
    while ( %_d != 0 ) {
      var %_e %_e $ [ $+ [ $calc(%_g + 3) ] ]
      dec %_d | dec %_g
    }
    var %_d %_b
    while ( %_d != 0 ) {
      var %_f [ [ %_f ] $+ [ $2 ] ]
      dec %_d
    }
    mode $1 $3 $+ %_f %_e
    unset %_e
    %_c = %_c - %_b
  }
}

;Used in the menubar so I don't clutter that section up
alias renderhashtabs {
  window -x @htabs
  set %z.htab.numtables $hget(0)
  aline @htabs Hash Table Count: %z.htab.numtables
  while (%z.htab.numtables) {
    set %z.htab.itemcount $hget(%z.htab.numtables,0).item
    aline @htabs Hash Table: $hget(%z.htab.numtables)
    aline @htabs ------------------------------------
    while (%z.htab.itemcount) {
      aline @htabs $hget(%z.htab.numtables,%z.htab.itemcount).item : $hget(%z.htab.numtables,%z.htab.itemcount).data
      dec %z.htab.itemcount
    }
    aline @htabs ------------------------------------
    dec %z.htab.numtables
  }
  aline @htabs Done generating tables
  aline @htabs ##########################################
  unset %z.htab*
}

;/updatehashtable <hostmask> <nick>
alias updatehashtable {
  ;Schema: address contains number of long entries
  ;^n^ contains nth entry consisting of up to 10 nicks, preceded by nick count.
  ;
  set %z.htab.adni adrnick $+ $network
  hadd nickadr $+ $network $2 $1
  if (!$gettok($hget(%z.htab.adni,$1),1,32)) {
    hadd %z.htab.adni $1 1
    hadd %z.htab.adni ^1^ $+ $1 1 $2
  }
  else {
    set %z.htab.count $gettok($hget(%z.htab.adni,$1),1,32)
    set %z.htab.verify 0
    while (%z.htab.count) {
      if ($istok($hget(%z.htab.adni, ^ $+ %z.htab.count $+ ^ [ $+ [ $1 ] ]),$2,32) == $true) { set %z.htab.verify 1 }
      dec %z.htab.count
    }
    if (!%z.htab.verify) {
      set %z.htab.tempcnt $gettok($hget(%z.htab.adni,$1),1,32)
      if ($gettok($hget(%z.htab.adni,^ $+ %z.htab.tempcnt $+ ^ [ $+ [ $1 ] ]),1,32) > 25) {
        inc %z.htab.tempcnt
        set %z.htab.temp %z.htab.tempcnt $gettok($hget(%z.htab.adni),2-,32)
        hadd %z.htab.adni $1 %z.htab.temp
      }
      set %z.htab.temp ^ $+ %z.htab.tempcnt $+ ^ [ $+ [ $1 ] ]
      set %z.htab.temp2 $hget(%z.htab.adni,%z.htab.temp)
      hadd %z.htab.adni %z.htab.temp $calc($gettok(%z.htab.temp2,1,32)+1) $gettok(%z.htab.temp2,2-,32) $2
    }
  }
  if ($3) {
    ;sets main with additional about nick on this change
    set %z.htab.temp $gettok($hget(%z.htab.adni,$1),1,32) $2-
    hadd %z.htab.adni $1 %z.htab.temp
  }
  unset %z.htab*
}

alias clonecheck {
  hmake clones 16
  set %z.cc.count $nick($chan,0)
  while (%z.cc.count) {
    set %z.cc.mask $hget(nickadr $+ $network,$nick($chan,%z.cc.count))
    if (!$hget(clones,%z.cc.mask)) {
      hadd clones %z.cc.mask 1 $nick($chan,%z.cc.count)
    }
    else {
      set %z.cc.temp $calc($gettok($hget(clones,%z.cc.mask),1,32) + 1) $nick($chan,%z.cc.count) $gettok($hget(clones,%z.cc.mask),2-,32)
      hadd clones %z.cc.mask %z.cc.temp
    }
    dec %z.cc.count
  }
  set %z.cc.count $hget(clones,0).item
  if (!%z.cc.count) { halt }
  window -x @clones
  aline @clones Nick count: %z.cc.count
  aline @clones ------------------------------------
  while (%z.cc.count) {
    if ($gettok($hget(clones,%z.cc.count).data,1,32) > 1) {
      set %z.cc.temp $hget(clones,%z.cc.count).data
      set %z.cc.tcnt $gettok(%z.cc.temp,1,32)
      set %z.cc.tnik $gettok(%z.cc.temp,2-,32)
      aline @clones %z.cc.tcnt clones ( $+ %z.cc.tnik $+ ) at $hget(clones,%z.cc.count).item
    }
    dec %z.cc.count
  }
  aline @clones ------------------------------------
  unset %z.cc*
  hfree clones
}


EDIT:
UPDATE:  http://ourl.ca/3925/253042

505
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 02, 2010, 12:49:29 am »
Oh. I'm not changing much about how the menus will look. I've worked on it for too long to change around the layout.

I'm just redoing the code responsible from getting it from pieces of data in FlashROM to something visually pleasing on the screen. That's what I meant when I said I was redesigning them. Fiddling around with code that's about 6 months old.

506
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: January 01, 2010, 12:40:42 am »
There are four levels of gray possible with the menus but I haven't gotten around to doing anything with the dark gray, excepting the portraits and some symbol icons.

I *would* try something with using dark gray instead of black for "grayed out" options, but my code doesn't support that. If it becomes important, maybe, but it'll be a stretch.

Since I'm redesigning the menus, I'm thinking. Just thinking. About adding support for grayed out options. I think it would be the first to do it with 4 level gray.

EDIT: I'm nearly done with the pause screen menus, but I've taken some time aside to re-implement them so they take up less space and appear a bit more compact (code-wise)

507
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: December 31, 2009, 12:47:56 am »
A little more work has been done. Between this screenshot and the last, I've spent a total of about 16 hours working on this sucker. I don't feel like a whole lot has gotten done, but you can be the judge of that one.

Also, I intend on optimizing the menu systems after I'm done slogging through it. To do: Status menu, equipping alchemy, and item/magic actions.

508
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: December 27, 2009, 11:46:23 pm »
This is a screenie of what I have so far with the menus. I'm pretty sure there's a better way to do it, but I'm plodding through it until I can get something that works, then I'll see what I can do to optimize it.

The harder part was getting the menu to remember where it was when you go back to it. The main menu didn't have that since I wasn't thinking about doing it at that time.

EDIT: Forgot to show what was most recently done. Second image posted.

509
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: December 27, 2009, 12:33:46 pm »
Much work remains to be done before I can announce my total failure to make any progress.

No, wait. That's not the right thing to say!

Anyway, the project isn't dead. In fact, it's actively being worked on. Forgive my lack of foresight, but you wouldn't believe how hard/tedious it is to build menus in Z80 ASM. I mean, those that looks halfway decent and not crappy like the TI-OS menus.

Specifically, I got done with coding the equipment check menu (lets you view the stats of any piece of equipment you have on your person). The next thing on the plate is a customizable inventory menu base that provides options to filter through your general inventory and show only the stuff you're able to equip on the slot you've chosen.

The same system can be set to go "Nuuuuuu! U do NOT leave without taking this RARE ITEM!" if your inventory is full and ... yeah.

510
Escheron: Shadow over Ragnoth / Re: Escheron: Shadow over Ragnoth
« on: December 03, 2009, 12:25:29 pm »
Well, spellcasting won't exactly be based on the experience gained from using them, but the equipment that provides periodic wisdom gains by beating sufficiently ranked enemies will help with spell casting powers. Just try not to equip anything that'll make you stupid. No, I'm serious. There are some pieces of equipment that will *reduce* a particular stat instead of gaining in it. Supposed to make sure you pick your character's role a bit more carefully.

You don't have ranks. Your enemies do. Any of your stats that have reached a certain level cannot improve any further by beating weaker enemies.

Also, I'm not going to divulge too much about "Full Metal" mode other than the fact that you'll be replaying the story of the game through a very different perspective. Almost a comedy compared to the more serious mood that the main story attempts.

NOT SO EDITY: This was supposed to be posted "yesterday" but I completely forgot about it 'till today. My bad. Thank god for laptops and their appeal toward simply "sleeping" it instead of shutting it down.

Pages: 1 ... 32 33 [34] 35 36 ... 52