General Actions:
Log-in
Register
Wiki:
games
▼
:
Document Index
»
Space:
NPCTree
▼
:
Document Index
»
Page:
WebHome
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
NPC Tree Generator
Wiki source code of
NPC Tree Generator
Last modified by
Adam Hattrell
on 2008/06/01 22:04
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Show line numbers
#set($groovyObject = $xwiki.parseGroovyFromPage("Groovy.Random")) #set ($dice = $groovyObject.getRandom()) #macro (capital $word) #set ($firstLetter = "$word.charAt(0)") #set ($upperFirst = $firstLetter.toUpperCase()) ${upperFirst}${word.substring(1)} #end #macro (getRandomName) #set ($pageDoc = $xwiki.getDocument("ModernFirstNames.all")) #set ($names = $pageDoc.getObjects("NameManager.NameClass")) #set ($pick = $dice.nextInt($names.size())) #set ($choice = $names.get($pick)) #set ($firstName = $choice.get("name")) #set ($sql = "select prop.value from BaseObject as obj, XWikiDocument as doc, StringProperty as prop where obj.name=doc.fullName and obj.id = prop.id.id and doc.web='ModernLastNames' and obj.className='NameManager.NameClass' and obj.name<>'NameManager.NameClassTemplate' and prop.id.name='name'") #set ($names = $xwiki.search($sql)) #set ($pick = $dice.nextInt($names.size())) #set ($surname = $names.get($pick)) #capital("$firstName") #capital("$surname") #end 1 NPC Tree Generator This page allows you to generate a tree structure of NPCs. Later they will be able to take actions in order to compete for position. These actions will in turn generate rumours as they go. 1.1 Program Code * [NPCClass] * [NPCClassSheet] * [NPCTemplate] * [NPCHomeTemplate] 1.1 Generate a new NPC Tree <FORM> Space: <input type="text" name="space" value="New Space Name" /> <input type="submit" name="add" value="add"> </FORM> ## ## First deal with any create new Page requests ## #if ($request.getParameter("add")) #set ($space = $request.getParameter("space")) ## ## Create 1 new master ## #set ($masterName = "#getRandomName()") #set ($mDoc = $xwiki.getDocument("$space",$util.clearName("$masterName"))) #set ($mObj = $nDoc.getObject("NPCTree.NPCClass", true)) $mObj.set("name", $masterName) $mDoc.save() ## ## Create 5 new Children ## #set ($range = [1..5]) #foreach ($number in $range) #set ($subName = "#getRandomName()") #set ($nDoc = $xwiki.getDocument("$space", $util.clearName("$subName"))) #set ($nObj = $nDoc.getObject("NPCTree.NPCClass", true)) $nObj.set("name", $subName) $nObj.set("superior", $masterName) $nDoc.save() #end ## ## Now create a home page to control the tree ## #set ($params = "template=NPCTree.NPCHomeTemplate&sheet=1&parent=NPCTree.WebHome") #set ($redirect = $xwiki.getURL("${space}.WebHome", "edit", $params)) $response.sendRedirect($redirect) #end 1.1 Existing Trees #set ($sql = "select distinct doc.web from XWikiDocument as doc, BaseObject as obj where obj.name=doc.fullName and obj.className='NPCTree.NPCClass' and obj.name<>'NPCTree.NPCTemplate'") #set ($results = $xwiki.search($sql)) #foreach ($item in $results) * [${item}.WebHome] #end