User talk:Kymara
converting xml path nodes to java
sed 's|</parameter>|));|' node > node2 sed 's|<parameter name="node[0-9]*">|nodes.add(new Node(|' node2 > node3
cleanup postman table
CREATE TABLE IF NOT EXISTS temp_postman
( source VARCHAR(64),
target VARCHAR(64),
message TEXT);
LOAD DATA LOCAL INFILE '/home/katie/workspace/stendhal/postmantable.csv'
INTO TABLE temp_postman FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
insert into postman (source, target, message, timedate, messagetype, delivered)
select source, target, message, '2010-07-20 00:00:00', 'P', 0 from temp_postman;
-- yes thats a lie about the message type, some came from npcs
update postman set messagetype = 'N' where source in ('MrTaxman','Dagobert','Harold','Wilfred');
-- add indices on target and delivered (combined?)
-- remove messages where the target does not correspond to an existing character name
delete postman from postman
left join characters on characters.charname = postman.target
where characters.charname is null;
-- remove messages where the target account.username is permanently banned (why do this first? it might get more?)
delete postman from postman
join account on account.username = postman.target
where account.status='banned';
-- remove messages where the target character has an account which is is permanently banned
delete postman from postman
join characters on characters.charname = postman.target
join account on account.id = characters.player_id
where account.status='banned';
-- remove any uncaught spam?
delete from postman
where source = 'Harold'
and length(message)>1000;
-- postman used to be case sensitive on target and so there were some really ancient messages in there
delete postman from postman
join characters ON characters.charname = postman.target
where characters.charname not like binary postman.target;
-- empty messages (1 was delivered was from new version)
delete from postman
where message =''
and delivered =0;
Stuff to do, over time
- Correct some of the warnings in findbugs:
BlackjackHelp tomi string append- Portal cast
- Review golden orc sword quest that's in feature requests
- Create quests pointing to dungeons
Postman on website- one player area access portals in banks
- equipment refactoring (right click equip, swapping items over existing items in slots)
Stendhal Quest Histories - can we get some smart default methods in? or use existing actions?
stats
File:Bug age 20101127.ods or picture:
installing egit plugin
* Open Help->Install New Software. * Are there any sites already in a drop list list to work with? If not then click Add... * Add the Helios update site: Name: helios Location: http://download.eclipse.org/releases/helios/ * type egit into the filter text box * Eclipse Egit should come up, mark that by clicking the small box next to it * Click Next > and follow through clicking Next > until finished. * Restart Eclipse when prompted
getting marauroa source from git
Configuration
- First you need to tell Git about yourself, click Preferences > Team > Git > Configuration
- Click New Entry and enter
Key: user.name value: your sourceforge username, e.g. kymara
- Click New Entry again and enter
Key: user.email value: your sourceforge email address, e.g. kymara@users.sourceforge.net
- This information is stored in ~/.gitconfig and will be used by Git to identify who did change the history of the repository whenever you are the user logged on to your computer.
- Now you can add the rest of the file as in the example. You'll see Configuration and the file location, click open and edit it directly in Eclipse.
Get code
- File> Import ... Git> Projects from Git
- Clone ... and add :
URI ssh://USERNAME@arianne.git.sourceforge.net/gitroot/arianne/marauroa.git changing your username to your own
- If you have trouble at this stage try restarting eclipse and try again
- Select all branches (fast anyway)
- initial branch is master with remote name origin
- let it import everything
- select the repository you just cloned .. Next>
- Method for project creation: use the new projects wizard. Don't know about the team sharing option I did the default.
- Finish this part
- new Project Wizard will open
- Select Java Project, Net>
- give it a name (marauroa will do)
- I think the other defaults are okay
- Finish
elfy
create table temp_elf_princess select timedate, source from gameEvents where event='quest' and param1= 'elf_princess' and param2 = 'flower_brought' and id < 58379295;
Query OK, 562 rows affected (6.22 sec)
Records: 562 Duplicates: 0 Warnings: 0
-- yeah I could have done a union but I wanted to know counts and have more control
insert into temp_elf_princess
select timedate, source from gameEvents_2009_08_17
where event='quest' and param1= 'elf_princess' and param2 = 'flower_brought';
Query OK, 346 rows affected (5.67 sec)
Records: 346 Duplicates: 0 Warnings: 0
insert into temp_elf_princess
select timedate, source from gameEvents_2009_02_19
where event='quest' and param1= 'elf_princess' and param2 = 'flower_brought';
Query OK, 393 rows affected (6.40 sec)
Records: 393 Duplicates: 0 Warnings: 0
insert into temp_elf_princess
select timedate, source from gameEvents_2008_08_21
where event='quest' and param1= 'elf_princess' and param2 = 'flower_brought';
Query OK, 131 rows affected (49.79 sec)
Records: 131 Duplicates: 0 Warnings: 0
select count(*) from temp_elf_princess;
+----------+
| count(*) |
+----------+
| 1432 |
+----------+
loots for achievements
create table looted_all_items
select
i1.id,
i1.itemid,
i1.param1,
i1.timedate,
cast('' as char(32)) as name,
cast(0 as unsigned) as nextid
from itemlog i1
where event = 'register'
and (param1 like 'golden %' or param1 like 'black %' or param1 like 'chaos %' or param1 like 'shadow %');
delete from looted_all_items
where param1 IN ('golden arrow', 'golden chainmail', 'golden mace', 'golden hammer', 'black apple', 'black pearl', 'black book');
alter table looted_all_items
add primary key (id),
add index Index_looted_itemid(itemid);
-- actually for all but one item, nextid = id+1 - but I didn't want to assume this!
update looted_all_items l
set nextid = (select i1.id from itemlog i1
where i1.itemid=l.itemid and i1.id>l.id
order by i1.id
limit 1);
update looted_all_items
join itemlog on nextid = itemlog.id
set name = source
where event = 'slot-to-slot'
and itemlog.param2 = 'content'
and source = param3;
flour
create table temp_milled_flour
select source, substring_index(param2,';',1) as count, id as gameEvents_id, timedate from gameEvents
where event ='quest' and param1 = 'jenny_mill_flour' and param2 <> 'done' and timedate < '2010-11-24';
insert into temp_milled_flour
SELECT source, substring_index(param2,';',1) AS count, id AS gameEvents_id, timedate FROM gameEvents_2009_08_17
WHERE event ='quest' AND param1 = 'jenny_mill_flour' AND param2 <> 'done' ;
insert into temp_milled_flour
SELECT source, substring_index(param2,';',1) AS count, id AS gameEvents_id, timedate FROM gameEvents_2009_02_19
WHERE event ='quest' AND param1 = 'jenny_mill_flour' AND param2 <> 'done' ;
insert into temp_milled_flour
SELECT source, substring_index(param2,';',1) AS count, id AS gameEvents_id, timedate FROM gameEvents_2008_08_21
WHERE event ='quest' AND param1 = 'jenny_mill_flour' AND param2 <> 'done' ;
-- yes I know about unions I just like to see row counts.
alter table temp_milled_flour
add index Index_tempflour_source(source);
alter table temp_milled_flour
add column last boolean default 0;
update temp_milled_flour t join
(select source, max(timedate) as maxdate from temp_milled_flour group by source) t2 on t.source = t2.source
set last = 1
where maxdate = timedate;
-- oh yes i remember now why i thought this was going to get hard - i can't use id like i planned.
select * from temp_milled_flour where last = 1 and timedate < '2009_08_17';
-- if they didn't pick it up then delete it - as when they pick it up later they will get the points
-- oh and they might pick it up between now and the next release too :/
-- anyway it's only worth to check when it's the last mill they did
/* delete FROM stendhal.temp_milled_flour where last = 1 and (select id from gameEvents where event ='quest' and param1 =
'jenny_mill_flour' and param2 = 'done' and temp_milled_flour.source=gameEvents.source and gameEvents.id > gameEvents_id limit 1) is null; */
tortoise git
Downloaded http://code.google.com/p/tortoisegit/downloads/detail?name=TortoiseGit-1.6.3.0-32bit.msi&can=2&q=
Accepted all defaults, including using the putty based ssh client (said it was better with windows) rather than openssh. Note: puttygen was therefore included.
Opened new folder, right click, Git clone .. error that something hasn't installed properly, asked me if i want to open settings dialog to fix it. (something about msysgit and a path) don't know what to do next
Okay, looks like I should have done this first:
Please install msysgit 1.6.1 or above before install tortoisegit http://code.google.com/p/msysgit
For building achievements to list at Stendhal Achievements
They still need a bit of categorisation for the page though:
select distinct
concat('{{',
concat_ws('|',
'Achievement',
concat('title=',title),
concat('description=',description),
concat('difficulty=',(case base_score when 10 then 'easy' when 50 then 'medium' when 1000 then 'hard' else 'todo' end))),
'}}')
from testserver.achievement
order by category, identifier;
Pending achievements
insert into pending_achievement(charname, achievement_id, param, cnt)
select source, 17, "", count(*) from temp_elf_princess group by source;
stendhal> insert into pending_achievement(charname, achievement_id, param, cnt) select name, 26, param1, 1 from looted_all_items where timedate<'2010-11-24' and name <>'' and param1 IN ('chaos armor', 'chaos boots', 'chaos cloak', 'chaos helmet', 'chaos legs', 'chaos shield');
Query OK, 20004 rows affected (0.46 sec)
Records: 20004 Duplicates: 0 Warnings: 0
stendhal> insert into pending_achievement(charname, achievement_id, param, cnt) select name, 34, param1, 1 from looted_all_items where timedate<'2010-11-24' and name <>'' and param1 IN ('shadow armor', 'shadow boots', 'shadow cloak', 'shadow helmet', 'shadow legs', 'shadow shield');
Query OK, 13100 rows affected (0.20 sec)
Records: 13100 Duplicates: 0 Warnings: 0
stendhal> insert into pending_achievement(charname, achievement_id, param, cnt) select name, 40, param1, 1 from looted_all_items where timedate<'2010-11-24' and name <>'' and param1 IN ('black armor', 'black boots', 'black cloak', 'black helmet', 'black legs', 'black shield');
Query OK, 1632 rows affected (0.17 sec)
Records: 1632 Duplicates: 0 Warnings: 0
stendhal> insert into pending_achievement(charname, achievement_id, param, cnt) select name, 61, param1, 1 from looted_all_items where timedate<'2010-11-24' and name <>'' and param1 IN ('golden armor', 'golden boots', 'golden cloak', 'golden helmet', 'golden legs', 'golden shield');
Query OK, 9562 rows affected (0.26 sec)
Records: 9562 Duplicates: 0 Warnings: 0
-- after 0.92 if we want a kill enemy army achievement, can do
-- highest number so far is about 40 and there's nothing in older gameEvents tables
insert into pending_achievement(charname, achievement_id, param, cnt)
SELECT source, XX, "", count(*) FROM gameEvents WHERE event='quest' AND param1= 'kill_enemy_army' AND param2 like 'done%' group by source;