???

Here you can post threads requesting help on the official POL Ultima Online Emulator Core 097.
Note: Core 097 is no longer officially supported.
Post Reply
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

???

Post by kwandobe »

097 Distro is very limited. Anyone have the 095 Distro or 096 Distro with complete scripts so one such as myself can merge them to 097? Or does someone care to share an already merged server?

Otherwise I need to script every mobile, monster and system left out of the 097 Distro, that will only take me 3 months if I stay on the computer 24/7 right? lol
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Re: ???

Post by *Edwards »

It's been since february 2008 for me :D

But look further in the distro097 it's awesome the work in it. I would say to simply add the things you want in distro097 from older distro... That's what I do system by system, item by item. ;)
Luth
Former Developer
Posts: 200
Joined: Mon Jan 30, 2006 8:10 am

Re: ???

Post by Luth »

I have my old UO:T2A shard from 095/096 that had all the skills and whatnot. If you would like them (or any specific package from them, such as Taming) to convert to 097, I can post them here. And if would be willing to re-post the converted 097 versions here so we can put them into Distro, that'd be swell. :)
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Re: ???

Post by *Edwards »

Actually I'm having troubles with the tamed functions for pets you can have.. I can send only few commands like attack. So yeah would be great to share so I could take a look and see if I can do anything with it... I will officially release few things I've done since 5 months at the moment I get a connection at home :p
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

I have no problem copying scripts from 095 to 097, except, there is no place to download the 095 or 096 distros. So if someone would be kind enough to upload it somewhere, or if the devs realize people may need it and add it to the download section of this site, that'd be great.

I have looked at the script work in this distro, it appears to have some slack it doesn't need, thats all im at liberty to say.

:cheesy:
Luth
Former Developer
Posts: 200
Joined: Mon Jan 30, 2006 8:10 am

Re: ???

Post by Luth »

kwandobe wrote:I have no problem copying scripts from 095 to 097, except, there is no place to download the 095 or 096 distros. So if someone would be kind enough to upload it somewhere, or if the devs realize people may need it and add it to the download section of this site, that'd be great.

I have looked at the script work in this distro, it appears to have some slack it doesn't need, thats all im at liberty to say.

:cheesy:
Criticism is easy. ;) Feel free to fix up the scripts and post them back. Distros are, by and large, a community effort. Devs primarily work on the Core, you see, doing such things as fixing memory leaks, improving performance, and adding the latest features.

Edwards: Here's my pkg/skills/taming package plus scripts/ai/tamed.src. I haven't touched it since the first release of 096, but I'm sure you won't have much trouble converting things. I look forward to seeing the 097 versions of this in the Distro! kwandobe, feel free to take a crack at them as well, if you need taming. If yours is better scripted than Edwards' conversion, I'll be happy to add it to Distro.

[Link to files:] http://forums.polserver.com/viewtopic.php?f=8&t=2479

Cheers.
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

I am a very busy man, but I will work on this when I get the chance. Currently I am converting taming.src, but I don't know if I will be able to finish it or start work on another .src in the package tonight.

I promise to keep it as original as possible, except I may create a configuration file toggle (1 enabled, 0 disabled) change to allow creatures to always be happy if the server user so wishes. What do you think?

I will let you know of my progress as much as I can!
Luth
Former Developer
Posts: 200
Joined: Mon Jan 30, 2006 8:10 am

Re: ???

Post by Luth »

kwandobe wrote:I am a very busy man, but I will work on this when I get the chance. Currently I am converting taming.src, but I don't know if I will be able to finish it or start work on another .src in the package tonight.

I promise to keep it as original as possible, except I may create a configuration file toggle (1 enabled, 0 disabled) change to allow creatures to always be happy if the server user so wishes. What do you think?

I will let you know of my progress as much as I can!
I looked through the code shortly after I uploaded. Wow! It could sure use a thorough cleaning! :D You'll have your work cut out for you, I'm sure!

As far as adding optional features, I don't think anyone will try to stop you. :) We love features.

Looking forward to see your work. Cheers!
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

Hrmmm which file is SKILLID_TAMING defined? That is the only thing keeping taming.src from compiling.

For the GetEffectiveSkill(who, SKILLID_TAMING) func this person used I replace it with AP_GetSkill(who, SKILLID_TAMING), think that works just as well?

Update: Found it, its ANIMAL_TAMING in this distro.

its in attributes\include\attributeConstants.inc for anyone that needs to know.
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

...
Last edited by kwandobe on Tue Dec 23, 2008 12:29 am, edited 1 time in total.
User avatar
CWO
POL Expert
Posts: 1160
Joined: Sat Feb 04, 2006 5:49 pm

Re: ???

Post by CWO »

SkillIDs are identified in scripts/include/client.inc I believe. But the new distro may not use SkillIDs. SkillIDs are numbers that need to be converted into attribute names (very old, outdated, and inefficient). Just pass what you would pass for taming in that situation (I haven't seen the distros recently so I'm not entirely sure what it will be looking for).
Yukiko
Distro Developer
Posts: 2826
Joined: Thu Feb 02, 2006 1:41 pm

Re: ???

Post by Yukiko »

Like CWO said, Skill IDs are no longer used. You will want to pass a string rather than a number and the value for taming is AnimalTaming.

All attribute identifiers can be found in \pol\pkg\systemss\attributes\config\attributes.cfg
Luth
Former Developer
Posts: 200
Joined: Mon Jan 30, 2006 8:10 am

Re: ???

Post by Luth »

I posted my old Musicianship scripts as well. Compared to Taming, they're pretty simple, and look much cleaner.

http://forums.polserver.com/viewtopic.php?f=8&t=2483
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

Thanks Luth, I will convert musicianship as well. Tonight I don't have a chance of even breathing on a script, maybe tommorow night I will have a chance. I work in retail so my hours are crazy this week.

Thank you all for your help, thank you Yukiko, and thank you cwo.
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

Yukiko wrote:Like CWO said, Skill IDs are no longer used. You will want to pass a string rather than a number and the value for taming is AnimalTaming.

All attribute identifiers can be found in \pol\pkg\systemss\attributes\config\attributes.cfg

If I include attributes.cfg and use "AnimalTaming", im passing an array, do I want to pass an array? Thats what this config file is made up of, arrays.

Update: I think what you mean is to just use a string like CheckSkill(who, "AnimalTaming", difficulty + 10, points) instead of including attributes.cfg and doing like so CheckSkill(who, AnimalTaming, difficulty + 10, points), am I catching your drift?

In that case im not passing an array. Sorry im a slow thinker tonight. :)
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

When I Use: CheckSkill(who, "AnimalTaming", difficulty + 10, points)

I get: error errortext = "Invalid parameter type. Expected param 1 as Integer. got String"

I guess CheckSkill still wants us to use the skill numbers? But you guys said they are outdated and we dont use them?
User avatar
OldnGrey
POL Expert
Posts: 657
Joined: Sat Feb 04, 2006 6:26 pm

Re: ???

Post by OldnGrey »

Correct. The inbuilt CheckSkill function still wants skillids.
Assuming you are writing for the 097 distro, then use SkillCheck instead of CheckSkill.

The older inbuilt CheckSkill function was in use in the older distros, but the 097 distro doesn't use it at all. It rewrote the function to use the skill names and can be used in the same way.
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

Thank you Oldngrey =)
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

Ok, heres animaltaming.src except theres no tamed.src yet so it doesn't set the new script on the horse. I even figured out how to get the animal to attack you if you anger it enough by using "brainAI:npcCommands" include.

I have no idea how to start writing tamed.src at the moment. I am trying to figure out exactly how the new brain system works. I am used to those old one file npc control scripts, but I want the new system implemented, especially because it means less coding and a cleaner script.

Hey if anyone wants to write tamed.src, I would be obliged! lol

Code: Select all

use cfgfile;
use util;
use uo;
use os;
use attributes;

include ":brainAI:eventid";
include ":brainAI:npcCommands";
include ":spawnSystem:spawnerUtil";
include ":attributes:attributes";
include ":attributes:skills";
include "include/client";

program tame(who)

    if(who.dead)
      SendSysMessage(who, "You cannot tame a creature in your condition.");
      return;
    endif

  var conf := ReadConfigFile(":BrainAI:npcdesc");

  EraseObjProperty(who, "IsMeditating");
  SendSysMessage(who, "Which creature do you wish to tame?" );
  
  var thecreature := Target(who);
  
    if(!thecreature)
      SendSysMessage(who, "cancelled.");
      return;
    endif
    
  var creaturestr := GetAttribute( thecreature, "strength");
  
    if(!CheckLineOfSight(who, thecreature))
      SendSysMessage(who, "You are unable to see or reach that creature!");
      return;
    endif
    
    if(Distance(who,thecreature) > 5)
      SendSysMessage(who, "You are not close enough to tame that creature!");
      return;
    endif

    var elem := FindConfigElem(conf, fix_template(thecreature.npctemplate));
    
    if(!elem)
      SendSysMessage(who, "You cannot tame this!");
      return;
    endif
    
    var difficulty := cInt(GetConfigInt(elem, "TameSkill"));

    if(!difficulty)
      SendSysMessage(who, "This creature is unable to be tamed!");
      return;
    endif
    
    if (thecreature.script == "tamed")
      SendSysMessage(who, "This creature looks pretty tame already!");
      return;
    endif

    var points := (difficulty * 2);
          
    if(GetObjProperty(thecreature, "prevtamed"));
    
      if(difficulty > 20)
        difficulty := difficulty - 20;
      else
        difficulty := 0;
      endif
      
      if(points > 20)
        points := points - 20;
      else
        points := 0;
      endif
      
    endif
    
    var ownerarray := GetObjProperty(thecreature, "LastOwners");
    
      if(!ownerarray)
        ownerarray := {};
      endif
      
      if(who.serial in ownerarray)
        points := 0;
        difficulty := 0;
      elseif (AP_GetSkill(who, "AnimalTaming") < (difficulty - 10))
        SendSysMessage(who, "You have no chance of taming this creature!");
        return;
      endif
      
    var amt := len(ownerarray);
    var holder := {};
    
      foreach thing in ownerarray
        if((thing != who.serial) and (amt < 10))
          holder.append(thing);
        else
          amt := amt - 1;
        endif
      endforeach
      
    ownerarray := holder;
    ownerarray.append(who.serial);
    SetObjProperty(thecreature, "LastOwners", ownerarray);
    
      if(points != 0)
        points := points * 10;
      endif
      
    var thename := get_name(thecreature.name);
    var critterhp := GetVital(thecreature, "Hits");
    var counter := 0;
    
    Detach();
    sleep(1);
    
    while(counter < 4)
      if(who.dead)
        break;
      else
        critterhp := GetVital(thecreature, "Hits");
        case(counter)
          0: PrintTextAbove(who, "What a nice " + thename + ".");
          1: PrintTextAbove(who, "I've always wanted a " + thename + " like you.");
          2: PrintTextAbove(who, thename + ", will you be my friend?");
          3: PrintTextAbove(who, "I wont hurt you.");
        endcase
        counter := counter + 1;
        sleep(4);
        if(GetVital(thecreature, "Hits") < (critterhp / 2))
          SendSysMessage(who,"This creature is too angry to continue taming");
          return;
        endif
        if(Distance(who,thecreature) > 5)
          SendSysMessage(who, "You are not close enough to continue taming this creature!");
          return;
        endif
      endif
    endwhile
    
    if(who.dead)
      SendSysMessage(who, "You cannot continue to tame a creature in your condition.");
      return;
    endif
    
    if(thecreature.script == "tamed")
      SendSysMessage(who, "That creature looks pretty tame already.");
      return;
    endif
    
    if(SkillCheck(who, "AnimalTaming", difficulty + 10, points))
    
      SendSysMessage(who, "You successfully tame the " + thename);
      Run_Script_To_Completion(":mobiles:death:npcdeath", thecreature);
//      thecreature.script := "tamed";
      SetObjProperty(thecreature, "master", who.serial);
      SetObjProperty(thecreature,"script",thecreature.script);
      SetObjProperty(thecreature,"prevtamed",1);
      SetObjProperty(thecreature,"happiness", 30);
      RestartScript(thecreature);
      
    else
    
      var npccfgfile := ReadConfigFile(":BrainAI:npcdesc");
      var orneriness := npccfgfile[thecreature.npctemplate].orneriness;
      
      if(!orneriness)
        orneriness := 0;
      endif
      
      orneriness := orneriness * 5;
      
      if(((RandomInt(99) + 1) + orneriness) > AP_GetSkill(who, "AnimalTaming"))
      
	  if ( creaturestr > 400 )
   
            SendSysMessage(who, "You seem to have upset the beast!");
            AI_Attack(thecreature, who);
            
	  endif
   
      else
      
        SendSysMessage(who, "You failed to tame the creature.");
        
      endif
      
    endif
    
endprogram

  function get_name(thename)
  
    if (find(thename, "an ",1) == 1)
    
      return thename[4,len(thename)];
      
    elseif (find(thename, "a ",1) == 1)
    
      return thename[3,len(thename)];
      
    else
    
      return thename;
      
    endif
    
  endfunction
  
  function fix_template(template)
  
    if (find(template, ":brainai:",1) == 1)

      return template[10,len(template)];
      
    endif
    
  endfunction
Luth
Former Developer
Posts: 200
Joined: Mon Jan 30, 2006 8:10 am

Re: ???

Post by Luth »

Wonderful; thank you!
kwandobe
New User
Posts: 22
Joined: Wed Dec 17, 2008 10:24 pm

Re: ???

Post by kwandobe »

OldnGrey wrote:Correct. The inbuilt CheckSkill function still wants skillids.
Assuming you are writing for the 097 distro, then use SkillCheck instead of CheckSkill.

The older inbuilt CheckSkill function was in use in the older distros, but the 097 distro doesn't use it at all. It rewrote the function to use the skill names and can be used in the same way.
I noticed that using the SkillCheck function I have been unable to gain any skill from using the skill. I guess I will have to write a chance and set the skill higher myself in my scripts then?
Post Reply