new AudioDescription(AITAudio) { volume = 1.2; isLooping= false; is3D = false; type = $MessageAudioType; }; new AudioProfile(elf) { filename = "~/data/AIT/elf.wav"; description = "AITAudio"; preload = false; }; new AudioProfile(orc) { filename = "~/data/AIT/orc.wav"; description = "AITAudio"; preload = false; }; function GetQueryEntry(%file) { %entry=""; while(%ln !$= "<->" && !%file.isEOF()) { %ln=%file.readLine(); if (%ln !$= "<->") %entry=%entry@%ln; } return %entry; } function GetQuery(%queryFile,%queryNumber) { %file = new FileObject(); if(isFile($pref::AIT::DataPath@%queryFile@".qry") && %file.openForRead($pref::AIT::DataPath@%queryFile@".qry")) { for(%i=1;%i<%queryNumber;%i++) { GetQueryEntry(%file); if(%file.isEOF()) return ""; } %query=GetQueryEntry(%file); } %file.close(); %file.delete(); return %query; } function clientCmdCloseAIT() { Canvas.popDialog(AITGui); AITQuery.settext(""); AITAnswer.settext(""); } function clientCmdAITMessage(%sender,%senderName,%Mugshot,%npcFile,%queryNumber,%playerName) { $AIT::Sender=%sender; $AIT::QueryNumber=%queryNumber; onAITMessage(%npcFile,%queryNumber,%senderName,%Mugshot,%playerName); } function OnAITMessage(%npcFile,%queryNumber,%senderName,%Mugshot,%playerName) { if(%Mugshot!$="" && isFile($pref::AIT::DataPath@%Mugshot)) { AITMugshot.setbitmap($pref::AIT::DataPath@%Mugshot); } else { AITMugshot.setbitmap($pref::AIT::DataPath@"default.png"); } if(%npcFile!$="") { %queryAnswer=GetQuery(%npcfile,%queryNumber); if(%queryAnswer!$="") { %AnswerStart=strPos(%queryAnswer,""); %query=getSubStr(%queryAnswer,0,%AnswerStart); %answer=getSubStr(%queryAnswer,%AnswerStart+13,strLen(%queryAnswer)); } else { %query="ERROR::Invalid Query!!\nnpcFile = "@%npcFile@"\nQueryNumber = "@%queryNumber; } } if (%query!$="") { %query=strreplace(%query,"<>",%senderName); %query=strreplace(%query,"<>",%playerName); if ((%soundStart = playAITSound(%query)) != -1) %query = getSubStr(%query, 0, %soundStart); AITQuery.settext(%query); ChatHud.addLine($Pref::AIT::QueryColour@%senderName@": "@StripMLControlChars(%query)); } if (%answer!$="") { %answer=strReplace(%answer,"<>",%senderName); %answer=strReplace(%answer,"<>",%playerName); %answer=strReplace(%answer,"
","\n"); %line=%answer; %i=1; while(%i<=$Pref::AIT::MaxOptions) //lets number the options { %Start=strpos(%line,""); if(%Start<0) { %i=$Pref::AIT::MaxOptions+1; } else { %line=getSubStr(%line,%Start,strlen(%line)); %End=strpos(%line,"")+4; %line=getSubStr(%line,%End,strlen(%line)); %answer=strReplace(%answer,""," "@%i@" - "); %i++; } } AITAnswer.settext(%answer); } else { AITAnswer.settext("Continue..."); } AITAnswer.Visible=true; Canvas.pushDialog(AITGui); } function AITAnswer::OnURL(%this, %url) { //same as AITQuery::onURL, so just forward the call AITQuery::onURL(%this, %url); } function AITQuery::OnURL(%this, %url) { if(firstword(%url)!$="AIT" && firstword(%url)!$="AITLink" && firstword(%url)!$="AITNoAnswer") { gotoWebPage( %url ); } else if(firstword(%url)$="AITLink") { %Answers=%this.gettext(); %AnswerHeaderSize=strlen(""); %AnswerStart=strpos(%Answers,"")+%AnswerHeaderSize; %Answers=getSubStr(%Answers,%AnswerStart,strLen(%Answers)); %AnswerEnd=strPos(%Answers,"")+4; ChatHud.addLine($Pref::AIT::ActionColour@"You: "@StripMLControlChars(getSubStr(%Answers,0,%AnswerEnd))); CommandToServer('AITAnswer', $AIT::Sender, $AIT::QueryNumber, "QL"@restwords(%url)); Canvas.popDialog(AITGui); AITQuery.settext(""); AITAnswer.settext(""); } else if(firstword(%url)$="AITNoAnswer") { Canvas.popDialog(AITGui); AITQuery.settext(""); AITAnswer.settext(""); } else { %Answers=%this.gettext(); %Answers=strReplace(%Answers,restwords(%url)@" - ",""); %AnswerHeaderSize=strlen(""); %AnswerStart=strpos(%Answers,"")+%AnswerHeaderSize; %Answers=getSubStr(%Answers,%AnswerStart,strLen(%Answers)); %AnswerEnd=strpos(%Answers,"")+4; ChatHud.addLine($Pref::AIT::ActionColour@"You: "@StripMLControlChars(getSubStr(%Answers,0,%AnswerEnd))); CommandToServer('AITAnswer', $AIT::Sender, $AIT::QueryNumber, restwords(%url)); Canvas.popDialog(AITGui); AITQuery.settext(""); AITAnswer.settext(""); } } function PlayAITSound(%message) { %soundStart = strstr(%message, "~Sound:"); if (%soundStart == -1) { return -1; } if(alxIsPlaying($AITSoundHandle)) alxStop($AITSoundHandle); %sound = getSubStr(%message, %soundStart + 7, strLen(%message)); $AITSoundHandle = alxPlay(%sound); return %soundStart; } function SelectAnswer(%Number) { if(strPos(AITAnswer.getText(),"")>=0) AITAnswer.OnURL("AIT "@%Number); else OutOfAITFunction(%Number); }