PenUltima Online

It is currently Sat Aug 30, 2008 4:37 am

All times are UTC - 8 hours




Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: help on updating to 096 from 095
PostPosted: Thu Nov 23, 2006 4:06 pm 
Offline

Joined: Sun Feb 19, 2006 8:03 pm
Posts: 8
is there a way to update from 095 to 096 without the loss of scripts or info ? i mean the user databases the items. spawns are not so important but the databases are


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 23, 2006 8:36 pm 
Offline

Joined: Sat Feb 04, 2006 5:49 pm
Posts: 745
Location: Chicago, IL USA
data is completely useable. All you need to do is go through the changelog and see what you have to update in your scripts. Mostly if you're using only one map, its a lot easier. Once you try and use multiple maps, that will probably be the most time consuming change.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 24, 2006 11:48 am 
Offline

Joined: Sun Feb 19, 2006 8:03 pm
Posts: 8
well we r using the reg map that comes with the pol 095... no special maps or anything besides a few tourney arenas we made. we are also having some issues with a few scripts that refuse to work, for instance when u heal with a bandie and the charactr is poisoned, it wont cure but just heal, only magic cure spell and pots work against poison ... anyone know what might be giving this bug ? since we had a working one, but the poison damages were not shown on the clients and the poison would not decrease hp nor stamina... the poison damages were too low and im just a script noobie :D any help would e loved


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 24, 2006 2:49 pm 
Offline

Joined: Sat Feb 04, 2006 5:49 pm
Posts: 745
Location: Chicago, IL USA
first of all, check where the poisoning happens like the poison spell. Next, check what actually cures it. If a script is started by the poison spell, check that script to see what its looking at in order to keep going and just make sure your healing scripts reverse that. If your cure spell works, thats the code you should be looking at and making sure your healing script does that.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Nov 25, 2006 12:58 pm 
Offline

Joined: Sun Feb 19, 2006 8:03 pm
Posts: 8
thank you very much mate :D ill be trying to fix it asap :D


Top
 Profile  
 
 Post subject:
PostPosted: Sat Nov 25, 2006 1:48 pm 
Offline

Joined: Sun Feb 19, 2006 8:03 pm
Posts: 8
well it aint working no matter what im doing to the script. ima post the code here so u guys caa check it and see if anyone can help me

Code:
use uo;
use os;
use npc;
use util;
use cfgfile;

include "include/dist";
include "include/client";
include "include/res";
//include "include/respenalty";
include "include/canaccess";
include "include/attributes";
include ":poisonwatcher:poisons";


var clock := ReadGameClock();
var healing, Anatomyskill;

program use_bandages (who, item)
  healing := GetAttribute(who, "healing");
  Anatomyskill := GetAttribute(who, "anatomy");
  EraseObjProperty(who, "IsMeditating");
  if(!can_access(who, item))
    return;
  endif
  if(item.movable == 0)
    SendSysMessage(who, "You cannot use that.");
    return;
  endif
//  var Sleeptime;
  if(!ReserveItem(item))
    return;
  endif
  if(!GetObjProperty(who, "HealTimer"))
    EraseObjProperty(who, "#Healing");
  elseif(clock != GetObjProperty(who, "HealTimer"))
    EraseObjProperty(who, "#Healing");
  endif
  if(GetObjProperty(who, "#Healing"))
    SendSysmessage(who, "You can only heal one person at a time!");
    return;
  endif
  SendSysmessage(who, "who would you like to heal?");
  var patient;
  if (GetObjProperty (who, "#dotheal"))
    patient := who;
  else
    patient  := Target(who, TGTOPT_HELPFUL + TGTOPT_CHECK_LOS);
  endif
  if(!patient)
    SendSysmessage(who, "Cancelled.");
    EraseObjProperty(who, "#Healing");
    return;
  endif
//  var Anatomyskil:= GetBaseSkill(who, SKILLID_ANATOMY);
//  var poisons := ListPoisonsByType(patient, "defaultPoisons");
  if(dist(who, patient) >= 2)
    SendSysMessage(who, "Your patient is too far");
    EraseObjProperty(who, "#Healing");
    return;
  elseif(!CheckLineOfSight(who,patient))
   SendSysMessage(who,"You are unable to see your patient");
        EraseObjProperty(who, "#Healing");
   return;
  elseif((GetHp(patient) >= GetMaxHp(patient)) and (ListPoisonsByType(patient, "defaultPoison").size() == 0))
   SendSysMessage(who,"Your patient is at full health");
        EraseObjProperty(who, "#Healing");
   return;
  endif
  detach();
  SetObjProperty(who, "HealTimer", clock);
  if((patient.graphic == 0x190) or (patient.graphic == 0x191) )
     if(Patient.serial == who.serial)
     if(ListPoisonsByType(patient, "defaultPoison").size() > 0)
        SendSysMessage(who,"You start to cure yourself.");
        if(SubtractAmount(Item , 1))
        cure(who, patient);
        endif
      else
        SendSysMessage(who,"You start to heal yourself.");
        if(SubtractAmount(Item , 1))
        heal(who, patient);
        endif
     endif
    elseif(ListPoisonsByType(patient, "defaultPoison").size() > 0)
      if(Patient.dead)
      SendSysMessage(who,"Your patient is dead.");
                EraseObjProperty(who, "#Healing");
      return;
      elseif(!CheckLineOfSight(who,patient))
        SendSysMessage(who,"You cant see you patient.");
        EraseObjProperty(who, "#Healing");
        return;
      endif
      if(SubtractAmount( Item , 1 ) and (dist(who, patient) <= 1))
        SendSysMessage(who,"You start to cure " + patient.name);
        SendSysMessage(patient,who.name + " starts to cure you.");
        cure(who, patient);
      else
        SendSysMessage(who, "Your Patient is too far.");
        EraseObjProperty(who, "#Healing");
        return;
      endif
   else
      if(Patient.dead)
      SendSysMessage(who,"Your patient is dead.");
                EraseObjProperty(who, "#Healing");
      return;
     elseif(!CheckLineOfSight(who, patient))
      SendSysMessage(who,"You cant see you patient.");
        EraseObjProperty(who, "#Healing");
        return;
      endif
      if(SubtractAmount(Item , 1) and (dist(who, patient) <= 1))
        SendSysMessage(who,"You start to heal "+patient.name);
        SendSysMessage(patient,who.name+" starts to heal you.");
        heal(who, patient);
      else
        SendSysMessage(who, "Your patient is too far.");
        EraseObjProperty(who, "#Healing");
        return;
      endif
    endif
  elseif(patient.dead)
    if(!CheckLineOfSight(who,patient))
     SendSysMessage(who,"You cant see your patient anymore.");
          EraseObjProperty(who, "#Healing");
     return;
    endif
    if(SubtractAmount( Item , 1 ) and (dist(who, patient) <= 1))
      SendSysMessage(who,"You start to resurrect " + patient.name);
      SendSysMessage(patient, who.name + " starts to resurrect you.");
      resurrect_pc (who, patient);
    else
      SendSysMessage(who, "Your Patient is too far.");
      EraseObjProperty(who, "#Healing");
      return;
    endif
  elseif(patient.npctemplate)
    var parms := {};
    parms[1] := patient;
    parms[2] := who;
    if(dist(who, patient) < 2)
      if(SubtractAmount(Item, 1))
        start_script(":veterinary:vet", parms);
        EraseObjProperty(who, "#Healing");
        return;
      endif
    else
      SendSysMessage(who, "Your patient is too far.");
      EraseObjProperty(who, "#Healing");
      return;
    endif
  else
    SendSysmessage( who , "You cant heal that." );
    EraseObjProperty(who, "#Healing");
    return;
  endif
endprogram

function heal(who, patient)
  SetObjProperty(who, "#Healing", 1);
  var chp;
  var healingskill := (Cint(GetBaseSkill(who, SKILLID_HEALING)) / 2);
  var anatomy := (Cint(GetBaseSkill(who, SKILLID_ANATOMY)) / 5);
  var healamt := healingskill + anatomy + 10;
  var basehealamt := healamt;
  var counter := 0;
  var cycles;
  var count := 0;
  if(patient == who)
    var dexcheck := (GetBaseDexterity(who) / 20);
    cycles := (12 - dexcheck);
  else
    if(GetBaseDexterity(who) <= 33)
      cycles := 5;
    elseif(GetBaseDexterity(who) <= 67)
      cycles := 4;
    else
      cycles := 3;
    endif
  endif
  var chk := 0;
  while(counter <= cycles)
    if(!GetObjProperty(who, "HealTimer"))
      chk := 1;
      EraseObjProperty(who, "#Healing");
      break;
    elseif(clock != GetObjProperty(who, "HealTimer"))
      EraseObjProperty(who, "#Healing");
      break;
    endif
    chp := GetHP(who);
    sleep(1);
    if(dist(who, patient) > 1)
      sendsysmessage(who,"Your patient isnt close enough.");
      sendsysmessage(patient, who.name + " has stopped healing you.");
      EraseObjProperty(who, "#Healing");
      break;
    endif
    if(GetHP(who) < chp)
      if((RandomInt(basehealamt)+1) >= GetBaseDexterity(who))
        SendSysMessage( who, "Your fingers slip." );
        healamt := (healamt * 0.90);
        count := count + 1;
        if(count >= 5)
          healamt := 5;
        endif
      endif
    endif
    if(patient.graphic == 970)
      resurrect_pc(who, patient);
      break;
    endif
    if(getobjproperty(patient,"poison_level"))
      cure(who, patient);
      break;
    endif
    if(counter >= cycles)
      var diff := 100 - Cint((GetHP(patient) * 100.0) / GetMaxHP(patient));
      if(CheckSkill(who, SKILLID_HEALING, diff, 0))
        if(healamt <= 5)
          sendsysmessage(who,"You finish applying the bandages, but they barely help.");
          EraseObjProperty(who, "#Healing");
        endif
        if((GetMaxHP(patient) - GetHP(patient)) >= healamt)
          healdamage(patient, healamt);
          AwardPoints(who, SKILLID_HEALING, (healamt * 2));
          EraseObjProperty(who, "#Healing");
        else
          healamt := (GetMaxHP(patient) - GetHP(patient));
          healdamage(patient, healamt);
          AwardPoints(who, SKILLID_HEALING, (healamt * 2));
          EraseObjProperty(who, "#Healing");
        endif
        if(GetHP(patient) >= GetMaxHP(patient))
        sendsysmessage(who, "you have healed your patient completely");
        sendsysmessage(patient, who.name + " has completely healed you.");
                  EraseObjProperty(who, "#Healing");
        else
        sendsysmessage(who, "you successfully heal " + patient.name);
        sendsysmessage(patient, who.name + " has partially healed you.");
                  EraseObjProperty(who, "#Healing");
       endif
        break;
      else
        SendSysmessage ( who , "You could not heal him." );
        EraseObjProperty(who, "#Healing");
      endif
    endif
    counter := counter + 1;
  endwhile
  if(chk == 1)
    SendSysMessage(who, "You stop healing your patient.");
    EraseObjProperty(who, "#Healing");
    return;
  endif
endfunction


function dacure(who, patient)
  SetObjProperty(who, "#Healing", 1);
  var chp;
  var healing := (Cint(GetBaseSkill(who, SKILLID_HEALING)) / 25);
  var anatomy := (Cint(GetBaseSkill(who, SKILLID_ANATOMY)) / 50);
//  var healamt := healing + anatomy;
  var healamt := Cint(healing / 20) + Cint(anatomy / 50);
  var counter := 0;
  var cycles;
  var count := 0;
  if(patient == who)
    var dexcheck := cint((GetBaseDexterity(who) / 20) + randomint(2));
    cycles := (10 - dexcheck);
  else
    if(GetBaseDexterity(who) <= 33)
      cycles := 5;
    elseif(GetBaseDexterity(who) <= 67)
      cycles := 4;
    else
      cycles := 3;
    endif
  endif
  var chk := 0;
   while(counter <= cycles)
      var chp := GetHP(who);
      sleep(1);
      if(!GetObjProperty(who, "HealTimer"))
         SendSysMessage(who, "You stop healing your patient.");
         SendSysMessage(patient, who.name + " has stopped healing you.");
         break;
      elseif(clock != GetObjProperty(who, "HealTimer"))
         break;
      elseif(dist(who, patient) > 1)
         SendSysMessage(who, "Your patient isn't close enough.");
         SendSysMessage(patient, who.name + " has stopped healing you.");
         break;
      elseif((patient.dead) and (patient != who))
         SendSysMessage(who, "You start to resurrect " + patient.name + ".");
         SendSysMessage(patient, who.name + " starts to resurrect you.");
         resurrect_pc(who, patient);
         break;
      elseif(ListPoisonsByType(patient, "defaultPoison").size() == 0)
         SendSysMessage(who,"You start to heal " + patient.name + ".");
         if(patient != who)
            SendSysMessage(patient, who.name + " starts to heal you.");
         endif
         heal(who, patient);
         break;
      elseif(GetHP(who) < chp)
         if((RandomInt(100)+1) > GetBaseDexterity(who))
            SendSysMessage( who, "Your fingers slip." );
            healamt := (healamt - 1);
            count := count + 1;
            if(count >= 5)
               healamt := 0;
            endif
         endif
      endif
      if(counter >= cycles)
         if(CheckSkill(who, SKILLID_HEALING, 48, 0))
            CurePoison(patient, 120, "defaultPoison", healamt);
   if (ListPoisonsByType(patient, "defaultPoison").size() == 0)
               SendSysMessage(who,"You have completely cured your patient.");
               SendSysMessage(patient, who.name + " has cured you completely.");
               AwardPoints(who, SKILLID_HEALING, (healamt * 75));
   else
      SendSysMessage(who, "You have helped curing your patient but he is still poisoned.");
      SendSysMessage(patient, who.name + " has tried to cure your poison.");
      AwardPoints(who, SKILLID_HEALING, (CInt(healamt/2)));
   endif
            break;
         else
            SendSysMessage ( who , "You could not heal him." );
         endif
      endif
      counter := counter + 1;
   endwhile
  if(chk == 1)
    SendSysMessage(who, "You stop curing your patient.");
    EraseObjProperty(who, "#Healing");
    return;
  endif
endfunction




function cure(who, patient)
  SetObjProperty(who, "#Healing", 1);
  var chp;
  var healing := (Cint(GetBaseSkill(who, SKILLID_HEALING)) / 25);
  var anatomy := (Cint(GetBaseSkill(who, SKILLID_ANATOMY)) / 50);
  var healamt := healing + anatomy;
  var counter := 0;
  var cycles;
  var count := 0;
  if(patient == who)
    var dexcheck := (GetBaseDexterity(who) / 20);
    cycles := (15 - dexcheck);
  else
    if(GetBaseDexterity(who) <= 33)
      cycles := 5;
    elseif(GetBaseDexterity(who) <= 67)
      cycles := 4;
    else
      cycles := 3;
    endif
  endif
  var chk := 0;
  while(counter <= cycles)
    if(!GetObjProperty(who, "HealTimer"))
      chk := 1;
      EraseObjProperty(who, "#Healing");
      break;
    elseif(clock != GetObjProperty(who, "HealTimer"))
      EraseObjProperty(who, "#Healing");
      break;
    endif
    chp:=GetHP(who);
    sleep(1);
    if(dist(who, patient) > 1)
      sendsysmessage(who,"Your patient isnt close enough.");
      sendsysmessage(patient, who.name + " has stopped healing you.");
      EraseObjProperty(who, "#Healing");
      break;
    endif
   if(GetHP(who) < chp)
      if((RandomInt(100)+1) > GetBaseDexterity(who))
       SendSysMessage( who, "Your fingers slip." );
        healamt := (healamt - 1);
        count := count + 1;
        if(count >= 5)
          healamt := 0;
        endif
      endif
   endif
    if(patient.graphic == 970)
      resurrect_pc(who, patient);
      break;
    endif
    if(counter >= cycles)
      var poisons := ListPoisonsByType(patient, "defaultPoisons");
      var chealamt := 5; //poisons.level * 3;
      if(CheckSkill(who, SKILLID_HEALING, 65, 0) and (Cint(GetBaseSkill(who, SKILLID_HEALING)) >= 60))
        if(healamt > 0)
          CurePoison(patient, 120, "defaultPoison", healamt);
          EraseObjProperty(patient,"poison_level"); // left in to make sure old poison props are not on the character
          if((ListPoisonsByType(patient, "defaultPoison").size() < 1) or (ListPoisonsByType(patient, "defaultPoison").size() == 0) or (!ListPoisonsByType(patient, "defaultPoison").size()))
            SendSysMessage(who,"You have cured " + patient.name + " completely.");
            SendSysMessage(patient, who.name + " has cured you completely.");
            patient.SetPoisoned(0);
            AwardPoints(who, SKILLID_HEALING, (healamt * 5));
            healdamage(patient, chealamt);
            EraseObjProperty(who, "#Healing");
          else
            SendSysMessage(who,"You fail to cure " + patient.name + ".");
            SendSysMessage(patient, who.name + " has failed to cure you.");
            EraseObjProperty(who, "#Healing");
          endif
        else
          sendsysmessage(who,"You finish applying the bandages, but they barely help.");
          EraseObjProperty(who, "#Healing");
        endif
        break;
      else
        SendSysmessage ( who , "You could not cure him." );
        EraseObjProperty(who, "#Healing");
      endif
    endif
    counter := counter + 1;
  endwhile
  if(chk == 1)
    SendSysMessage(who, "You stop curing your patient.");
    EraseObjProperty(who, "#Healing");
    return;
  endif
endfunction

function resurrect_pc(who, patient)
  SetObjProperty(who, "#Healing", 1);
  var chp;
  var healamt := CInt(GetBaseSkill(who, SKILLID_HEALING));
  var sspeak  := (CInt(GetEffectiveSkill(who, SKILLID_SPIRITSPEAK)) / 5);
  if(sspeak <= 1)
    sspeak := 1;
  endif
  var basehealamt := healamt;
  var counter := 0;
  var chk := 0;
  if (patient.multi)
    SendSysMessage(who, "You may not ressurect someone inside a house.",3,31);
    EraseObjProperty(who, "#Healing");
    return;
  endif
  while(counter <= 10)
    if(!GetObjProperty(who, "HealTimer"))
      chk := 1;
      EraseObjProperty(who, "#Healing");
      break;
    elseif(clock != GetObjProperty(who, "HealTimer"))
      EraseObjProperty(who, "#Healing");
      break;
    endif
    chp:=GetHP(who);
    sleep(1);
    if(dist(who, patient) > 1)
      sendsysmessage(who,"Your patient isn't close enough.");
      sendsysmessage(patient, who.name + " has stopped healing you.");
      EraseObjProperty(who, "#Healing");
      break;
    endif
   if(GetHP(who) < chp)
      if((RandomInt(100)+1) > GetBaseDexterity(who))
       SendSysMessage(who, "Your fingers slip.");
        healamt := (healamt * 0.9);
      endif
   endif
    if(ListPoisonsByType(patient, "defaultPoison").size() > 0)
      CurePoison(patient, 120, "defaultPoison", 100);
      EraseObjProperty(patient,"poison_level"); // left in to make sure old poison props are not on the character
    endif
    if(counter >= 10)
      var sdiff := 85 - CInt(sspeak);
      if((CheckSkill(who, SKILLID_HEALING, sdiff, 0)) and (Cint(GetBaseSkill(who, SKILLID_ANATOMY)) >= 81) and (Cint(GetBaseSkill(who, SKILLID_HEALING)) >= 81))
        if ((patient.multi) or (who.multi))
          SendSysMessage(who, "You may not ressurect inside a house.",3,31);
          EraseObjProperty(who, "#Healing");
          return;
        endif
        if (!CheckLosAt( who, patient.x, patient.y, patient.z ))
          SendSysMessage(who, "You can no longer see your patient.",3,31);
          EraseObjProperty(who, "#Healing");
          return;
        endif
        if((RandomInt(basehealamt) + 1) < healamt);
          AwardPoints(who, SKILLID_HEALING, 50);
          EraseObjProperty(who, "#Healing");
          if(ResNow(patient)==1)
            resurrect(patient);
//            ResPenalties(patient);
            SendSysmessage(who, "You have resurrected " + patient.name);
            EraseObjProperty(who, "#Healing");
          else
            SendSysmessage(who, "The patient refused resurrection." );
            EraseObjProperty(who, "#Healing");
          endif
        else
          SendSysmessage(who, "You could not resurrect him.");
          EraseObjProperty(who, "#Healing");
        endif
      else
        SendSysmessage(who, "You could not resurrect him.");
        EraseObjProperty(who, "#Healing");
        break;
      endif
    endif
    counter := counter + 1;
  endwhile
  if(chk == 1)
    SendSysMessage(who, "You stop healing your patient.");
    EraseObjProperty(who, "#Healing");
    return;
  endif
endfunction


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC - 8 hours


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subice by phpBBservice.nl