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 - Avadon

Pages: [1] 2
1
General Discussion / Donations
« on: May 16, 2007, 10:44:20 am »
I've been thinking of donating.  However I have a few requests before I donate.
I'd like to see the financial books become public, it's only fair since PS requires complete ownership over every artistic creation used in PS.
How have previous funds been used?
How were the use of the funds justified?
How much of the funds went to feeding, clothing, or assisting the devs pay bills?
How much money does PS currently have and how is it allocated?

2
Guides and Tutorials / Re: Alliva Alyeve magic guide
« on: May 14, 2007, 04:52:52 pm »
I don't understand the magic damage formula.  What is P?
Why does my 6*P Summon Missile do more damage than my 8*P Energy Arrow?  I understand EA shoots faster and thus more damage over time, but based on 6*P and 8*P it seems that the 8*P would do more damage per shot than the 6*P..

3
Wish list / Re: Getting Metal Stocks
« on: May 12, 2007, 04:48:25 pm »
What about Lineage 2 style.
A crafter 'breaks' a weapon to get it's base materials.
Instead of actually getting the metal he gets crystals.
The weapon costs 100 to buy from the store, the crystals can then be sold to the store for 90 or saved up and would get 1 piece of metal for a certain amount of crystals.

4
PvP,PK and Thieving / Re: Pick pocketing.
« on: May 11, 2007, 07:18:55 pm »
Single roll, 1/4 of the (single roll + skill value) is used against the perception check and the whole for the sucessful steal check

That seems overly simplified.
The perception check would always be a ratio of the success check.  It's possible to try to steal from someone and fail and not be noticed, while it's also possible to successfully steal the item and get noticed.  2 dice is a requirement for this situation

5
Development Deliberation / Re: AI
« on: May 11, 2007, 07:06:36 pm »
Thank you.
I've been looking at npcbehave.xml.
As far as I can tell all the AI for all NPCs are stored in this file. 
Does this file get compiled into assembly/stack style code, similar to the code in the first post? 
Is there a list of all the functions and behaviors?
Which file(s) define the syntax for npcbehave.xml?

6
PvP,PK and Thieving / Re: Godmodding prevention.
« on: May 11, 2007, 02:30:24 pm »
Here's my solution to this issue.
http://hydlaa.com/smf/index.php?topic=28631.0
If you want to RP a fight and let nothing permanent come from it.  So be it.  The guards don't want to waste time on small fights anyway.
If you want to actually affect the person permanently challenge them, or lure them into an alley or other area and slice them up.  Just be prepared for the consequences.

7
Development Deliberation / Re: AI
« on: May 11, 2007, 11:22:50 am »
Ah, thank you!
I'm still new here and I didn't know those existed.   :D
Listening now.

8
PvP,PK and Thieving / Re: Pick pocketing.
« on: May 11, 2007, 11:19:55 am »
No apologies needed.  :D
We're both trying to figure out ways to make this game fun and realistic for everyone, while weighing risks for both sides, and making sure the victim gets justice and the suspect gets rewards for their gamble.

9
Oops bad grammar.  Fixed.

In a street brawl, both combatants decided to fight.  One challenged and the other accepted.  Both would be punished.
If someone used a negative skill on someone else and is caught, ie pickpocketing.  Then it'd be a provocation and the defender would be justified in using force to defend himself.
I think in town only challenge and provocation pvp should be allowed in the main public areas, with completely open pvp in the dangerous areas of towns, ie: back streets, alleys, and slums.
The guards should be extremely powerful.  If a fight starts without provocation then both get punished by jail time, fines, etc for breaking the peace.  If weapons are used then the fine increases.  If someone is killed then the guards kill the other person, unless he escapes. 

All crimes are noted and tallied.  If you escape you can pay your fine and charges are dropped or you can just let your charges increase.  Criminals would need to use non-public ways to enter and exit towns, ie: sewers.

10
PvP,PK and Thieving / Re: PvP, Guild Wars and Thieving
« on: May 11, 2007, 11:03:05 am »
I'd also recommend that the criminal skills be limited to a % of the total player population.

Anyone can learn the basics, but the criminal masterminds don't want too many thieves on the streets.  Too many thieves would cut into their profits, so they could tell those who train the knowledge of criminal skills to only allow only those recommended by a crime organization (if any exist currently) or to those that have completed a quest.  It would still be limited to a % of the population.

11
PvP,PK and Thieving / Re: Pick pocketing.
« on: May 11, 2007, 10:52:30 am »
I either case, there is a chance the item was in fact taken.  In a pen and paper rpg, I would determine this by how much the perception check was succeeded by.  If Char Y, just barely made the role, the item has changed ownership (Char Y, noticed the attempt once the item was removed form the pocket).  But if Char Y made the role by a bunch, I'd say Char Y actually caught Char X in the attempt, Red Handed so to speak.
I was thinking that there would be two different rolls.  One to determine success of theft, and the second to determine if they get noticed.
First roll is simple success or fail outcome.
Second roll is more complex.
Fail: Player given the opportunity to engage thief and summon guards or just summon guards. (summoned guards don't appear immediately, thief can still get away but the guards head towards the area making it harder for thief to escape)
Succeed Slightly: Thief is noticed and guards get notified.
Succeed Greatly: Thief gets away and nobody knows what happened.

12
Development Deliberation / AI
« on: May 11, 2007, 10:32:07 am »
Who does the AI coding?
I'm assuming it's coded in C++ then converted to assembly/stack code?
Is it hardcoded or in a script file that can be modified without recompiling?

If it looks similar to this, then I would love to join the team and assist you with all your AI needs.  The following code is something I created for a private Lineage 2 server.
Code: [Select]
class smuggler_begin : default_npc
handler 3 13 //  TALKED
variable_begin
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end

push_event //  myself //check karma
push_const 704
add
fetch_i
push_event //  talker
push_const 32
add
fetch_i
push_const 412   //karma
push_const 49   //amt
greater
branch_false L44
L43 //hi
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
S4193. "smuggler_begin001.htm" //hi
push_string S4193
func_call 184680516 //  func[ShowPage]
shift_sp -2
shift_sp -1
jump L45
L44 //need karma
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
S4093. "smuggler_begin002.htm" //need karma
push_string S4093
func_call 184680516 //  func[ShowPage]
shift_sp -2
shift_sp -1
L45
handler_end

handler 4 //  TALK_SELECTED
variable_begin
"fhtml0"
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end

L33330 //Check Level of PC
push_event //  talker
push_const 32
add
fetch_i //  level
push_const 888
add
fetch_i
push_const 39
greater
branch_false L33333 // too low level
//INVENTORY CHECK begin
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 0
func_call 184680556 //  func[GetInventoryInfo]
shift_sp -2
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 1
func_call 184680556 //  func[GetInventoryInfo]
shift_sp -2
push_const 0.800000
mul
greater_equal
push_reg_sp
fetch_i
branch_true L128456
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 2
func_call 184680556 //  func[GetInventoryInfo]
shift_sp -2
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 3
func_call 184680556 //  func[GetInventoryInfo]
shift_sp -2
push_const 0.800000
mul
greater_equal
or
L128456
branch_false L128458 //jump inventory GOOD
L128457 //inventory BAD
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 1118
func_call 184680517 //  func[ShowSystemMessage]
shift_sp -2
shift_sp -1
exit_handler
L128458 //inventory GOOD
//INVENTORY CHECK end
L33337 //if pc has quest, then jump to accepted quest html
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 1
equal
branch_false L33339
L33338
push_event //  talker
push_const 32
add
fetch_i
S10905. "smuggler_begin008.htm" //quest accepted
push_string S10905
func_call 43 //  func[ShowPage]
shift_sp -2
shift_sp -1
shift_sp 1
jump L33306
L33339
push_event //  _from_choice
push_const 332
add
fetch_i
push_const 0
equal
branch_false L33292
L33291
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 0
equal
branch_false L33294
L33293
push_event //  _choiceN
push_const 328
add
push_reg_sp
fetch_i
push_event //  _choiceN
push_const 328
add
fetch_i
push_const 1
add
assign
shift_sp -1
push_event //  _code
push_const 324
add
push_reg_sp
fetch_i
push_const 0
assign
shift_sp -1
shift_sp 1
push_const 0
S10906. "Shadow Smuggler"
push_string S10906
func_call 131 //  func[AddChoice]
shift_sp -2
shift_sp -1
L33294
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 1
equal
push_reg_sp
fetch_i
branch_false L33297
L33296
push_event //  _choiceN
push_const 328
add
push_reg_sp
fetch_i
push_event //  _choiceN
push_const 328
add
fetch_i
push_const 1
add
assign
shift_sp -1
push_event //  _code
push_const 324
add
push_reg_sp
fetch_i
push_const 1
assign
shift_sp -1
shift_sp 1
push_const 1
S10907. "Shadow Smuggler"
push_string S10907
func_call 131 //  func[AddChoice]
shift_sp -2
shift_sp -1
L33297
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 1
equal
push_reg_sp
fetch_i
branch_false L33300
L33299
push_event //  _choiceN
push_const 328
add
push_reg_sp
fetch_i
push_event //  _choiceN
push_const 328
add
fetch_i
push_const 1
add
assign
shift_sp -1
push_event //  _code
push_const 324
add
push_reg_sp
fetch_i
push_const 2
assign
shift_sp -1
shift_sp 1
push_const 2
S10908. "Shadow Smuggler"
push_string S10908
func_call 131 //  func[AddChoice]
shift_sp -2
shift_sp -1
L33300
push_event //  _choiceN
push_const 328
add
fetch_i
push_const 1
greater
branch_false L33302
L33301
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 1
func_call 132 //  func[ShowChoicePage]
shift_sp -2
shift_sp -1
exit_handler
L33302
L33292
push_event //  _from_choice
push_const 332
add
fetch_i
push_reg_sp
fetch_i
branch_true L33303
push_event //  _choiceN
push_const 328
add
fetch_i
push_const 1
equal
or
L33303
branch_false L33305
L33304
push_event //  _code
push_const 324
add
fetch_i
push_reg_sp
fetch_i
push_const 0
equal
branch_false L33308
L33307
push_event //  _from_choice
push_const 332
add
fetch_i
push_const 0
equal
push_reg_sp
fetch_i
branch_true L33309
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 0
equal
or
L33309
branch_false L33311
L33310
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
func_call 58 //  func[GetMemoCount]
shift_sp -1
push_const 16
less
branch_false L33313
L33312
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
S10909. "smuggler_begin010.htm" //accept quest
push_string S10909
func_call 184680516 //  func[ShowPage]
shift_sp -2
shift_sp -1
jump L33314
L33313
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
S10911. "fullquest.htm"
push_string S10911
func_call 43 //  func[ShowPage]
shift_sp -2
shift_sp -1
L33314
L33311
jump L33306
jump L33315
L33308
push_reg_sp
fetch_i
push_const 1
equal
branch_false L33316
L33315
push_event //  _from_choice
push_const 332
add
fetch_i
push_const 0
equal
push_reg_sp
fetch_i
branch_true L33317
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 1
equal
push_reg_sp
fetch_i
L33317
jump L33306
L33316
push_reg_sp
fetch_i
push_const 2
equal
branch_false L33322
L33321
push_event //  _from_choice
push_const 332
add
fetch_i
push_const 0
equal
push_reg_sp
fetch_i
branch_true L33323
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 59 //  func[HaveMemo]
shift_sp -2
push_const 1
equal
push_reg_sp
fetch_i
L33323
jump L33306
jump L33329
L33333
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
S10912. "smuggler_begin009.htm" //level low
push_string S10912
func_call 43 //  func[ShowPage]
shift_sp -2
shift_sp -1
L33322
L33329
L33306
shift_sp -1
exit_handler
L33305
call_super
handler_end

handler 31 //  QUEST_ACCEPTED
variable_begin
"quest_id"
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end

push_event //  quest_id
push_const 96
add
fetch_i
push_const 700 //Smugglers Quest#
equal
branch_false L33331
L33332
shift_sp 1
func_call 23 //  func[GetCurrentTick]
push_event //  talker
push_const 32
add
fetch_i //  quest_last_reward_time
push_const 644
add
fetch_i
sub
push_const 1
greater
branch_false L33335
L33334
push_event //  talker
push_const 32
add
fetch_i //  quest_last_reward_time
push_const 644
add
push_reg_sp
fetch_i
shift_sp 1
func_call 23 //  func[GetCurrentTick]
assign
shift_sp -1
shift_sp 1
L33340
push_event //  talker
push_const 32
add
fetch_i
S10913. "smuggler_begin008.htm" //quest accepted
push_string S10913
func_call 43 //  func[ShowPage]
shift_sp -2
shift_sp -1
shift_sp 1
L33341
push_event //  talker
push_const 32
add
fetch_i
push_const 700 //Smugglers Quest#
func_call 60 //  func[SetMemo]
shift_sp -2
shift_sp -1
push_event //  myself
push_const 704
add
fetch_i
push_const 1
push_event //  talker
push_const 40
add
fetch_i
push_const 700
func_call 184746363 //  func[AddLog]
shift_sp -3
shift_sp -1
push_event //  myself
push_const 704
add
fetch_i
push_event //  talker
push_const 40
add
fetch_i
push_const 700
push_const 1
func_call 184746087 //  func[SetFlagJournal]
shift_sp -3
shift_sp -1
push_event //  myself
push_const 704
add
fetch_i
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
S10914. "ItemSound.quest_accept"
push_string S10914
func_call 173 //  func[SoundEffect]
shift_sp -2
shift_sp -1
shift_sp 1
L33342
L33343
shift_sp 1
push_event //  talker
push_const 32
add
fetch_i
push_const 18320
push_const 1
func_call 77 //  func[GiveItem1]
shift_sp -3
shift_sp -1
L33335
L33336
L33331
exit_handler
handler_end

13
I feel the following idea would greatly benefit us by bringing a new aspect and sense of realism into the game.  This should not be hard to implement.  Most of the coding would be in the AI of guard class NPCs.  A few new checks would need to be added to the server code.

Server determines type of fight, based on challenge code, if fight is within sight of an NPC or reported by player alerting guards manually, otherwise fight is not reported.
Server determines distance from fight to guards, utilizing x, y, z coordinate system already in game.  (this is the easy way, or this would generate a path the guards would take and then calculate that distance)
Guards despawn or start running. (Running would be the prefered method)
If despawned: Server waits period of time based off distance and type of fight.
If guards run: Server waits period of time based off distance and type of fight, then sends the guards running towards the fight.  (delay to simulate the amount of time it takes for a npc or player to tell the guards)
Guards spawn or arrive near fight and break up fight. If the fight began due to both players wanting or deciding to fight, both get punished.  If fight began due to provocation, skill used that if failed auto challenges person, then the person responsible for starting the fight gets punished.  IE: Failing to pickpocket auto challenges the person you tried to steal from. 

Types of pickpocket outcomes:
Item Stolen, no notification. 
Item Stolen, with notification of player and guards. 
Item Stolen, with notification and thief auto challenges person, person accepts or declines, if accepted guards summoned, if declined guards notified.
Theft Failed, no notification.
Theft Failed, with notification of player and guards. 
Theft Failed, with notification and thief auto challenges person, person accepts or declines, if accepted guards summoned, if declined guards notified.

If provoker goes near Notified guards, then they punish provoker.

14
PvP,PK and Thieving / Re: Pick pocketing.
« on: May 11, 2007, 09:59:13 am »
Cloning items is a very bad idea that would be exploited.
I believe my idea from above would solve most of these issues.
The intelligent guards could be done pretty easily:
An illegal fight occurs in town.

Server determines type of fight, based on challenge code, if fight is within sight of an NPC, otherwise fight is not reported, unless by player alerting guards manually.
Server determines distance from fight to guards, utilizing x, y, z coordinate system already in game.  (this is the easy way, later this would generate a path the guards would take and then calculate that distance)
Guards despawn or start running.
If despawned: Server waits period of time based off distance and type of fight.
If guards run: Server waits period of time based off distance and type of fight, then sends the guards running towards the fight.  (delay to simulate the amount of time it takes for a npc or player to tell the guards)
Guards spawn or arrive near fight and break up fight. If fight began due to provocation then the person responsible for starting the fight gets punished.  Failing to pickpocket auto challenges the person you tried to pickpocket.

15
PvP,PK and Thieving / Re: Pick pocketing.
« on: May 10, 2007, 03:03:02 pm »
I wouldn't know, this is the only pickpocketing thread I've read.

Pages: [1] 2