Mirage Source
Class Specific Input - Printable Version

+- Mirage Source (https://mirage-engine.uk/forums)
+-- Forum: Mirage Source (Nostalgia) (https://mirage-engine.uk/forums/forumdisplay.php?fid=61)
+--- Forum: Archive (2006-2011) (https://mirage-engine.uk/forums/forumdisplay.php?fid=18)
+---- Forum: General (https://mirage-engine.uk/forums/forumdisplay.php?fid=17)
+---- Thread: Class Specific Input (/showthread.php?tid=2011)



Class Specific Input - Acruno - 14-08-2008

Ok, I am now attempting a feature that would allow Class X to press F1 and drink a HP Potion, and Class Y to press F1 and cast a spell.

Judging by how my class-specific backgrounds are chosen, I assume I would send a packet from the server with the player's class, and then define the keypresses in ModHandleData. However, I am not sure what sub to send it in server-side.

Anyone able to help?

[NOTE]I also would like to find out how to stop people just holding down a button to keep repeating an action (i.e. holding down ctrl and spam attacking an npc). I assume I could use a timer (for things like mining), or that there is some code that only runs the request once.

Thanks in advance Wink


Re: Class Specific Input - Robin - 14-08-2008

Acruno Wrote:Ok, I am now attempting a feature that would allow Class X to press F1 and drink a HP Potion, and Class Y to press F1 and cast a spell.

Judging by how my class-specific backgrounds are chosen, I assume I would send a packet from the server with the player's class, and then define the keypresses in ModHandleData. However, I am not sure what sub to send it in server-side.

Anyone able to help?

[NOTE]I also would like to find out how to stop people just holding down a button to keep repeating an action (i.e. holding down ctrl and spam attacking an npc). I assume I could use a timer (for things like mining), or that there is some code that only runs the request once.

Thanks in advance Wink

If you want it to only happen once per button press, call it in KeyPress or KeyUp instead of KeyDown.

As for how to call it, create the packet that sends the KeyPress request to the server, then write something like this:

Code:
Select Case GetPlayerClass(index)
Case 0 'Warrior
If HasItem(index, POTIONITEM#) then
Hp = Hp + PotionAddHP
TakeItem index, POTIONITEM#
SendHp index
exit sub
Case 1 'Mage
CastSpell index, SPELLSLOT#
exit sub
End select



Re: Class Specific Input - Acruno - 14-08-2008

That should work, I'll try that now.

On the subject of Key Presses, what about if I have a foraging skill and I only want to player to be able to forage on that tile once every X seconds (X defined in the editor perhaps)?


Re: Class Specific Input - Robin - 14-08-2008

Take advantage of the TempTile.

Set the timer to one of the variables in there, and then do a check.

Try.. erm, CheckGetMapItem or something in the server. It handles all the stuff when pressing Enter. At the end, add something like:

Code:
CheckForage index, map, x, y

Then the subroutine something like this:
Code:
If Player(index).ForageTimer > gettickcount + 1000 then
GiveItem index, ITEM#, ITEMVAL
Player(index).foragetimer = gettickcount
playermsg "omfg u got something!", white
exit sub
else
playermsg "u cant get that u silly fishcake", white
end if



Re: Class Specific Input - Acruno - 14-08-2008

Ok, I think I understand now, thanks for your help Smile