Note de Zo de Janvier 2019:

WarningRyzom.png
Remarque importante


WarningRyzom.png
Remarque importante

Sommaire

Les fonctions de script

Ce guide a pour but d’indiquer comment se servir des fonctions de script de l’A.R.C.C., l’Advanced Ryzom Content Creator. Il est recommandé d'avoir lu le volume I pour un usage global de l’A.R.C.C.. Les fonctions du script sont classées en cinq groupes.

  1. Visualizations
  2. Actions without player intervention
  3. Checks
  4. Captures information
  5. Steps to be validated by player

Visualizations

Ce groupe n'a qu'une seule fonction, l'une des plus simples et fréquentes.

Elle servira de référence en ce qui concerne zones et les boutons communs à toutes les fonctions détaillés dans des page distinctes pour faciliter la maintenances des documentations de l'ARRC.

window title and function name
Home Ce mode d'édition est aussi signalé par une icone à côté de la fonction qui a été éditée dans ce mode.

Displaying a message

Home Nom interne de la fonction : weVMessage_v3
window title and function name

Cette fonction affiche un message dans une fenêtre de type WebIG, avec un titre de fenêtre (ici en haut : Unit_test : « May the Force be with you »)

weVMessage_v3
Text field
  • bbcode (recommandé ; un aide-mémoire du bbcode ryzom est fourni dans un document dédié.)

Exemple :
[session=url_validated][scriptinfos]is_valid_url[/scriptinfos][/session]

  • html (spécifique, étudié plus tard, mais immédiatement testable sur le web)

Exemple :
<hr/>Hello!
<br/>oren pyr, Deles silam, Lordoy ad toll, Woha mik'ito
<hr>External link!
<img src="http://wiki.blender.org/skins/naiad/images/blender_logo.png"/><hr/>

  • lua (très spécifique ; étudié plus tard)

Exemple :
[lua]
function game:onMissionSelected(index)
disableModalWindow()
self:updateCurrMissionComboBox()
local missionWnd = getMissionWindow()
setOnDraw(missionWnd, "game:updateARKMissionCustomDesc()")
end
...
updateARKMissionCustomDesc_loop = 100
game:updateARKMissionCustomDesc(1)
[/lua]

Actions without player intervention

End of script

Home Nom interne de la fonction : lEnd_v4

Il est « sage » de terminer les scripts systématiquement par un « End of Script ». Le « End of script » peut être judicieusement utilisé pour avorter un script. En fin de script il permet d'avoir une sortie unique accédée par des branchements conditionnels comme {weAJump_short_description}.

function name

Cette fonction n'a qu'un seul paramètre : le nom. Le nom de toutes les fonctions est toujours initialisé par un code unique, mais il peut être modifié pour faciliter l'écriture et la relecture du script, par exemple et surtout lorsque la fonction peut être appelée par une autre, notamment les sauts et les branchements. (ici la fonction a été renommée : « Terminator »).


Jump

Home Nom interne de la fonction : lJump_v4

Cette fonction permet d'interrompre l’enchaînement des étapes en le déroutant vers une autre fonction à l'intérieur du script. Elle ne permet que de sauter en « avant ». Pour revenir en arrière, il faut utiliser la fonction weAWhile .

weAJump_V2

Le seul paramètre à fournir, est la fonction qui sera exécutée ensuite.

Include

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

===Include===</noinclude>

Arrow down.png Nom interne de la fonction : lInclude_v4

Cette fonction permet de faire appel à un autre script de l'event puis de reprendre l'execution des étapes .

WeAInclude

While

Bug.png Do not work

Arrow turn left.png Nom interne de la fonction : weAWhile

WIP

WIP


Window (webig windows management)

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Application xp.png Nom interne de la fonction : weAWindow_v3

Cette fonction permet de gérer les fenêtres de dialogues ( ouverture/fermeture, taille et position)

WeAWindow IG
WeAWindow ARK
→ BBCode :Permet de définir le nom de la fenêtre IG à utiliser
→$_GET[« current_window »] :Le nom de la fenetre est donnée par l'url et le parametre current_window
→Webig :Est la fenêtre qui s'ouvre quand on fait <ctrl>+w. C'est celle qui affiche les web apps
→Browse Npc :Est la fenêtre qui s'ouvre quand on parle à un PNJ. Donc, c'est celle qui s'ouvre quand on lie un script à un PNJ.
→Web Transaction :C'est une fenêtre cachée qui reçoit les réponses du serveur. Le joueur ne devrait jamais la voir.


Display message in game (broadcast, crafting information...)

Important.png
Article à retravailler
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
À revérifier par rapport à la version anglaise maintenue à jour

===DisplayIgMessage===</noinclude>

Page red.png Nom interne de la fonction : weADisplayIgMessage
WeADisplayIgMessage IG

Cette fonction permet d'afficher des messages dans les canaux de discussions (2).

Il faut noter que l'utilisation de la traduction permet d'avoir le texte dans la langue du joueur. Le texte en anglais étant : « We call it Voight-Kampff for short. » (Blade Runner).

WeADisplayIgMessagewindow

Le tableau suivant donne la liste les caractéristiques des choix de canaux offerts par la fonction (4).

Mode couleur canal SYS. INFOS
Default message system blanc Oui
Only in arround channel jaune alentours Non
Ambiance haut jaune Oui (3)
Task bas blanc Oui
Broadcast messages haut blanc alentours Oui
Title bas jaune Oui (1)
Taged broadcast messages... haut blanc alentours Oui
XP gain bas jaune Oui (1)
SP gain bas jaune Oui (1)
Zone haut blanc Oui
Damage to me rouge Oui (2)
Damage to me rouge Oui (2)
Damage to me from player rouge foncé Oui
Damage from me orange Oui
The opponent misses gris Oui (4)
I miss blanc Oui
Item bas vert Oui
Item other in group bas gris
Item failed bas magenta Oui
Spell to me bleu Oui
Spell from me bleu clair Oui
Emote rose Oui
Message of the day bas jaune Oui (1)
Forage Locate Deposit bas vert
False haut orange Oui
False in battle haut jaune Oui (3)
PVP timer bas orange
Thema finished bas jaune Oui (1)
Item special effec cyan-gris Oui (4)
Item special effect with center text haut cyan-gris Oui
Outpost state message haut bleu clair Oui
Ring invitation vert alentour

ShapeManager

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Shape handles.png Nom interne de la fonction : weAShapeManager_v2
WeAShapeManager IG

WeAShapeManager permet de poper des objets dans l'espace de Ryzom. Ici, un sac à dos magique apparaît en lévitation au dessus du personnage.

WeAShapeManager Main Window
  • 1) clear

Bug.png some strange problem with calculated position.


Save value in the database

Database add value.png Nom interne de la fonction : weADatabase_v2

Cette fonction sert à stocker une information dans une base locale exploitable par la suite dans le même script ou dans un autre du même event. Elle peut aussi incrémenter les valeurs numériques.

Il est préférable d'utiliser le mode d'édition assisté dans un premier temps, comme visualisé ici.

WeADatabase window
  • player,... : signification ?
  • [get]bag[/get] signification, fonctionnement ?
  • Un paramètre commun à l'event : [param]Max_player_bag[/param] (comment a été créé ce paramètre?)

[func=min]
  [math]
    ([func]now[/func]
    -
    [db=Bags]
      Status:[get]bag[/get]
    [/db])
  [/math]
..|12
[/func]

Save items given by the player in the event database

===ItemsDatabase===</noinclude>

End.png Obsolète ??

Database add item.png Nom interne de la fonction : weAItemsDatabase
WIP


Player received item

===ReceiveItems===</noinclude>


Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Basket add.png Nom interne de la fonction : weAReceiveItems
WeAReceiveItems IG
WeAReceiveItems script window
  • 1) Objet ajouté (ici une la peluche a été mise dans le sac du joueur)
  • 2) Plusieurs objet peuvent être ajoutés. Il en faut au moins un.
  • 3) Emplacement où sera déposé l'objet: le sac, la maison, la hall de guilde, un animal (mektoub de monte ou de bât), voire un emplacement temporaire.
  • 4) Au hasard (Oui/Non) Par rapport à quoi
  • 5) Requiert une réponse. A tester. Par défaut "Oui"
  • 6) Il s'agit d'une commande magique (Oui/Non) ???
  • 7) [commun] Nom interne de la fonction.
  • 8) Paramètres créés par la fonction.
WIP
  • 9) Nom de l'item

Question: comment connait-on la liste exhaustive des items?

  • 10) Quatité
  • 11) Qualité
  • 12) Contenu du sac.

Comment s'en servir IG?

  • 13) Quantité Max
  • 14) Qualité Max
  • 15) Nom personnalisé de l'objet
  • 16) Description personnalisée de l'objet


DeleteItems

Basket delete.png Nom interne de la fonction : weADeleteItems
WeADeleteItems script window


NpcManager

en:ARK/NpcManager
fr:ARK/NpcManager
Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

===NpcManager===</noinclude>

Group link.png Nom interne de la fonction : weANpcManager

Gestion du PNJ.

weANpcManager window
  • 1) groupName ???
  • 2) Liste de hmagicActions pour le PNJ

weAGroupScript

Script.png
  • 1) Text

weASpawnBot

User add.png
  • 1) Sheet name
  • 2) Quantity
  • 3) dispersion
  • 4) orientation
  • 5) botName
  • 6) posX
  • 7) posY
  • 8) look

weADeSpawnBot

User delete.png
  • 1) immediatly

weAGroupScriptSay

User comment.png
  • 1) Text
  • 2) mode

weAGroupScriptEmote

Emotion smile.png
  • 1) emote

weAGroupScriptAiAction

Cog go.png
  • 1) aiAction

ARK, guide

Dernière version 2019-06-02•


La Forge La Forge

</noinclude>

Send command to server

===Hmagic===</noinclude>


Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Wand.png Nom interne de la fonction : Hmagic

Hmagic permet d'envoyer une commande au serveur.

WeHMagic Window
  • 5) callAfterCheck (Oui/Non)

weASendUrl

But de cette fonction?

Link go.png
  • 1) isTarget: Oui/Non
  • 2) playerName: il peut s'agir de données récupérées dans les étapes antérieures ou stockées dans les DB de l'évent.
  • 3) appName: il peut s'agir de données récupérées dans les étapes antérieures ou stockées dans les DB de l'évent.
  • 4) appParams: il peut s'agir de données récupérées dans les étapes antérieures ou stockées dans les DB de l'évent.

weATeleport

Ne marche pas toujours?

Téléportage du joueur et éventuellement de sa monture.

Transmit.png
  • 1) x: coordonnées X
  • 2) y: coordonnées Y
  • 3) z: coordonnées Z. La valeur 0 indique que l'objet est posé sur le sol.
  • 4) t: délai en secondes pour lancer la téléportation.
  • 5) tpMektoub (Oui/Non): téléportage du Mektoub. Par défaut: Non
  • 6) forbidWhenPvpFlag (Oui/Non): Interdiction de téléporter avec le drapeau PVP positionné. Par défaut: Oui.

weATeleportToEntity

Ne marche pas?
Transmit go.png
  • 1) entity: Entity vers laquelle sera téléporté le joueur.
  • 2) tpMektoub (Oui/Non): téléportage du Mektoub. Par défaut: Non
  • 3) forbidWhenPvpFlag (Oui/Non): Interdiction de téléporter avec le drapeau PVP positionné. Par défaut: Oui.

weAManageMoney

Donner ou Prendre des Dappers

Money euro.png
  • 1) hmagicAction: (give/take)
  • 2) Dappers: Combien (nombre direct, fourni ou calculé).

weAChangeFame

Award star gold 2.png
  • 1) faction: parmi Fyros, Matis, Tryker, Zoraï, Kami et Karavan.
  • 2) hmagicAction: add/delete/set
  • 3) Quantité: Nombre direct, fourni ou calculé

weAChangeFactionPoints

Medal gold 3.png
  • 1) faction: parmi Fyros, Matis, Tryker, Zoraï, Kami et Karavan.
  • 2) hmagicAction: add/delete/set
  • 3) Quantité: Nombre direct, fourni ou calculé

weAManageGuildMoney

Money dollar.png
  • 1) hmagicAction: (give/take)
  • 2) Dappers: Combien (nombre direct, fourni ou calculé).

weAManageBuilding

Vendre / Rendre accessible un appartement de joueur ou de guilde

House3D.png
  • 1) hmagicAction: achat/vente d'appartement/hall de guilde.
  • 2) building: une longue liste d'immeuble disponible, mais sans références compréhensibles.

weATriggerPacs

Déclencher un évènement PACS (pour activer un ascenseur ou vortex)

JoystickIcon.png
  • 1) hmagicAction: (in/out)
  • 2) triggerId: déclencheur?!!

weASetOrganization

But de la fonction?

Définir la Tierce Faction du joueur

Vcard.png
  • 1) orgName: une seule valeur "maraudeur.

weAFixOldBuildings

But et fonctionnement de la fonction
Brick.png
  • 1) scopeAction: (Joueur/guilde)

Dans les fonction il faudra analyser:

Les Data Processors


Checks

All these check offers action after a logical evaluation, TRUE or FALSE.

Datas

en:ARK/Datas
fr:ARK/Datas

===Datas===</noinclude>

Tick.png Nom interne de la fonction : weCDatas

Cette fonction est l'équivalent d'un si test VRAI alors A sinon B .

weCDatas window
  • 1) Valeur
  • 2) testFunction
  • 3) testValue
  • 4) valideAction
  • 5) failAction
  • 6) [commun] Nom interne de la fonction. Ce nom est utilisé notamment pour les sauts, boucles...


Switch

===Switch===</noinclude>


Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Arrow switch.png Nom interne de la fonction : weCSwitch_v2

Cette fonction permet de proposer 10 branchements conditionnels + 1 par défaut en fonction d'une valeur fournie en premier paramètre de comparaison.

WeCSwitch window


Verification of value in database

Important.png
Article à retravailler
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
À revérifier par rapport à la version anglaise maintenue à jour

===Check Database===</noinclude>

Database check.png Nom interne de la fonction : weCDatabase

Cette fonction permet d'enchainer un action ou une autre selon une valeur contenue dans une pase de donnée de l'event.

WeCDatabase window
  • 3) databaseId : (global, player, guild) : signification ?


Player verification check from server (Fames, Dapper, Position...)

Vcard.png Nom interne de la fonction : weCPlayerInfos

weCPlayerInfos permet de tester toutes les informations stockées sur le serveur concernant le joueur.

WeCPlayerInfos window
  • 5) openWindow: Fenêtre ouverte pour afficher les tests (Aucune, WebIG, PNJ au survol, Transaction Web).
  • 6) hiddenWindow (Oui/Non)

weCPlayerFaction

Teste si le joueur appartient à la faction demandée.

Medal gold 1.png
  • 1) faction: faction à tester. Cette faction peut prendre l'une des valeurs suivantes:
  • neutre de civilisation, neutre de culte, neutre des deux à la fois;
  • fyros, matis, tryker, zoraï
  • kami, karavan
  • maraudeur, ranger, trytoniste


weCPlayerDappers

Teste si le joueur a une certaine quantité de dappers.

Money euro.png
  • 1) Quantity: quantité de dappers requise.

weCPlayerPosition

Examine la position du joueur. Si le joueur se trouve dans le rectangle délimité parles coordonnées min/max de x/y la valeur retournée est VRAI.

Map magnify.png
  • 1) min_x: cordonnée minimum en x en absolu par rapport à la carte d'Atys.
  • 2) min_y: cordonnée minimum en y en absolu par rapport à la carte d'Atys.
  • 3) max_x: cordonnée maximum en x en absolu par rapport à la carte d'Atys.
  • 4) max_y: cordonnée maximum en y en absolu par rapport à la carte d'Atys.

weCPlayerItem

Teste si une certaine quantité d'item d'une certain niveau est présent dans l'un des emplacements du joueur.

Package.png
  • 1) inventory: Emplacement où devrait se trouvé l'objet: le sac, la maison, la hall de guilde, un animal (mektoub de monte ou de bât), voire un emplacement temporaire.
  • 2) Nom du sheet: Question: comment connait-on la liste exhaustive des items???
  • 3) Qualité: la qualité requise de l'item
  • 4) minQuantity: sa quantité minimum.

weCPlayerTarget

Teste si la cible est celle souhaitée.

Arrow in.png
  • 1) type de cible: objet, PNJ, joueur, membre d'équipe, de guilde ou de ligue.
  • 2) Valeur: les trois premiers types demandent une précision du nom (nom du sheet, du PNJ ou du joueur)

weCPlayerFame

Teste la réputation dans les nations et factions standard.

Award star gold 1.png
  • 1) faction: les faction qui peuvent être testées sont:
  • fyros, matis, tryker, zoraï
  • kami, karavan

Les autres se déduisent de ces comparaisons.

  • 2) below_or_above: détermine si le test porte sur les valeurs inférieures ou supérieures du champ suivant donnée dans Valeur.
  • 3) Valeur: niveau de réputation requis, maximum ou minimum selon la comparaison choisie dans le champ précédent below_or_above.

weCPlayerGuild

Teste le grade du joueur dans sa guilde

Group.png
  • 1) rank: Chef, Officier supérieur, Officier, Membre.

weCPlayerGuildDappers

Teste si une quantité minimum de dappers est dans le trésor de la guilde.

Money dollar.png
  • 1) Quantity: quantité de dappers requise.

weCPlayerFreetrial

Test si le joueur est en version gratuite ou non.

Emotion tongue.png

no params


Captures information

Captures information on the player

Important.png
Article à retravailler
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
À revérifier par rapport à la version anglaise maintenue à jour


===PlayerInfos===</noinclude>

Vcard.png Nom interne de la fonction : weGPlayerInfos

weGPlayerInfos permet de prendre toutes les informations stockées concernant la cible du joueur ou la position de ce dernier.

weGPlayerInfos window


Steps to be validated by player

NewGiveItems

Package go.png Nom interne de la fonction : weSNewGiveItems

weSNewGiveItems permet de donner des items de qui à qui?

WeSNewGiveItems main window
  • 1) Items demandés, au moins un.

Description des items demandés.

WeSNewGiveItems item sub window


NPC dialog bubble option (like classic missions)

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

User comment.png Nom interne de la fonction : weSNpcDialog_v2

Cette fonction permet de créer une bulle de dialogue d'un PNJ.

WeSNpcDialog IG

Cette bulle es composée de deux parties.

WIP
  • 2) {npcRowId} ?
  • 5.1) La colonne de droite donne le libellé de la question tel que le joueur la verra éventuellement dans sa langue si on utilise la traduction. Si le champ est vide, il n'y a pas d'option affichée dans la bulle.
WIP
Les actions sont divisées en:
  • 5.2.1) none
  • 5.2.2) resume or finish de script
  • 5.2.3) open or finish the URL
  • 5.2.4) jump to a stage (seulement après l'étape courante, comme la fonction Jump
  • 5.2.5) run script
  • 5.2.6) include script (même fonction que Include
  • 6) {luaCheck}?


The player must wait X seconds for validation (automated validation possible)

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Time.png Nom interne de la fonction : weSTimer
Timer IG

Cette fonction déclenche un compte à rebours visualisé en haut de la scène IG par le remplissage de la flèche.

Timer Window


Mission

Important.png
Under Construction Panel.png !!! En travaux !!! Under Construction Panel.png
Il reste actuellement encore 105 articles en préparation dans la catégorie «WIP»
Article en préparation. Laissez l'auteur le terminer avant de le modifier.
La dernière édition était de Amosys le 2019-06-01.

Mission

Note go.png Nom interne de la fonction : weSMission
Mission IG

Cette fonction permet de créer des missions comme ici. Le PNJ qui annonce l'action "Replicant Kitin Eradicator", a donné la mission "Eradication mission" qui consiste à "You have to kill goo-kitins , now!".

La fonction mission ne permet d'activer qu'une seule mission à la fois.

Mission main window
  • 3) Compte ???

weAMissionGeneric

Note.png
  • 1) target
  • 2) title
  • 3) Description
  • 4) obj

weAMissionLoot

Basket put.png
  • 1) target
  • 2) tool
  • 3) no_tool_message
  • 4) title
  • 5) Description
  • 6) obj

weAMissionTalkTo

Comment.png
  • 1) target
  • 2) actionText
  • 3) title
  • 4) Description
  • 5) obj

weAMissionKillFauna

Bomb.png
  • 1) target
  • 2) title
  • 3) Description
  • 4) obj

weAMissionKillNpc

Bomb.png
  • 1) target
  • 2) title
  • 3) Description
  • 4) obj

weAMissionRemove

Note delete.png
  • 1) mission


Itemshop

Cart put.png Nom interne de la fonction : weSItemshop

Achat d'item? comment le PNJ a ces items?

La fonction Itemshop ne permet d'acheter qu'une seule type d'item à la fois.

WeSItemshopScript main window
  • 4) timer: ???
  • 5) (money/pvp_points) payé en dappers ou en points de faction???
  • 6) stockage en DB de l'item acheté?
  • 7) action suivante si l'item à bien été acheté???
  • 8) fenêtre ouvert pour afficher les tests (Aucune, WebIG, PNJ au survol, Transaction Web).

weItems

Description technique de l'item

Ruby.png
  • 1) Nom du sheet: Question: comment connait-on la liste exhaustive des items???
  • 2) Quantité
  • 3) quantité max
  • 4) Qualité
  • 5) qualité max
  • 6) Nom personnalisé
  • 7) texte descriptif personnalisé

Items in bag: Il est possible d'afficher le contenu du sac, mais comment s'en servir IG?

weNamedItem

Nom de l'item. Pourquoi ne pas passer par la fonction traduction?

Ruby link.png
  • 1) phrase clef identifiant l'item
  • 2) Nom de l'item en FR
  • 3) Nom de l'item en EN
  • 4) Nom de l'item en DE
  • 5) Nom de l'item en RU
  • 6) Nom de l'item en ES

weVirtualItem

Un virtual item, c'est quoi?

Ruby gear.png
  • 1) virtualItem
  • 2) Icon
  • 3) itemName
  • 4) Quantity
Récupérée de « https://fr.wiki.ryzom.com/w/index.php?title=ARK,_guide/Archives&oldid=36310 »