Mining problem

Here you can post threads requesting help on the official POL Ultima Online Emulator Core 096.
Note: Core 096 is no longer officially supported.
Post Reply
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Mining problem

Post by Nosferatu »

Hello!
I have an problem :
When i start digging for ore , script says me that is no more ore here to mine.
I 'll find where error is , but how to fix - dont know.

When i set diffi :=1 ; I'll start digging but character don't stop mining!

please help me!
thnx

Code: Select all

 var diffi := GetHarvestDifficulty( "ore", location.x, location.y, info.landtile );
  if(diffi == error)
  print("Error!");
    SendSysMessage(chr,"There is no more ore here to mine.");
    return 1;
  endif
Yukiko
Distro Developer
Posts: 2826
Joined: Thu Feb 02, 2006 1:41 pm

Post by Yukiko »

Is the return statement supposed to return a 1? If it's an error shouldn't it be:

Code: Select all

 var diffi := GetHarvestDifficulty( "ore", location.x, location.y, info.landtile ); 
  if(diffi == error) 
  print("Error!"); 
    SendSysMessage(chr,"There is no more ore here to mine."); 
    return 0; 
  endif
Not knowing which scriptset you are using makes diagnosing this harder but usually on an error you return a zero.
User avatar
CWO
POL Expert
Posts: 1160
Joined: Sat Feb 04, 2006 5:49 pm

Post by CWO »

try doing
Print(CStr(diffi));

usually the errortext will tell you exactly where the problem is.
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

ok, i'll try...
Thnx
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

error{ errortext = "No resource-bearing landmark there" }
what i ave after adding Print(CStr(diffi));
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

Oretable is dict{ 856 -> dict{ 160 -> error{ errortext = "Invalid parameter type
. Expected param 0 as Integer, got Uninit" } } }
[ORE CORE MANAGER] started. PID = 6717

That i have after starting ORECORE.ecl
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

ok , i'll just recompile all my MUL files , player start mining , but only iron .
In console i have that strings .

Code: Select all

Ore type found: error{ errortext = "Invalid parameter type.  Expected param 0 as
 Integer, got Uninit" }
error{ errortext = "Invalid parameter type.  Expected param 0 as Integer, got Un
init" }
User avatar
CWO
POL Expert
Posts: 1160
Joined: Sat Feb 04, 2006 5:49 pm

Post by CWO »

Parameters are 0 based so whatever function you're printing, check the first thing that you're passing to it. It wants an integer but its getting nothing at all.
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

I 'll just find where error is :

Code: Select all

function GenerateNewOreType(src)
print("SRC!!! -"+src);
Print("Generating new oretype !");
var rnum;
var skill := GetEffectiveSkill(src.source, 45);
var name :=src.name;
print(name);
If (!skill)
Print("Skill is "+skill);
endif

if((skill >= 1) && (skill <15))
rnum:=1;
elseif((skill >= 15) && (skill <20))
rnum:=2;
elseif((skill >= 20) && (skill <25))
rnum:=3;
elseif((skill >= 25) && (skill <30))
rnum:=4;
elseif((skill >= 30) && (skill <35))
rnum:=5;
elseif((skill >= 35) && (skill <40))
rnum:=6;
elseif((skill >= 40) && (skill <45))
rnum:=7;
elseif((skill >= 45) && (skill <50))
rnum:=8;
elseif((skill >= 50) && (skill <55))
rnum:=9;
elseif((skill >= 55) && (skill <60))
rnum:=10;
elseif((skill >= 60) && (skill <65))
rnum:=11;
elseif((skill >= 65) && (skill <70))
rnum:=12;
elseif((skill >= 70) && (skill <75))
rnum:=13;
elseif((skill >= 75) && (skill <80))
rnum:=14;
elseif((skill >= 80) && (skill <84))
rnum:=15;
elseif((skill >= 84) && (skill <88))
rnum:=16;
elseif((skill >= 88) && (skill <91))
rnum:=17;
elseif((skill >= 91) && (skill <94))
rnum:=18;
elseif((skill >= 94) && (skill <95))
rnum:=19;
elseif((skill >= 95) && (skill <97))
rnum:=20;
elseif((skill >= 97) && (skill <105))
rnum:=21;
elseif((skill >= 105) && (skill <120))
rnum:=22;
elseif((skill >= 120) && (skill <125))
rnum:=28;
elseif (skill>=130)
rnum:=30;
endif
Print("Rnum is "+rnum);
return(random(rnum)+1);

endfunction
when i call f-tion GetEffective skill , var SRC is /pkg/skills/mining/mining.src . So , i can't get Skill . How i must change script t get Effective Skill of player ?
Nosferatu
Journeyman Poster
Posts: 63
Joined: Fri Jul 21, 2006 9:58 pm

Post by Nosferatu »

I 'll just find answers for all my question .
may be it how's connected with 096 core .
I'll added to struct(in mining.src) that sended to ORECORE :

Code: Select all

 function GetOre(location,sk) //sk is character
  var x := location.x;
  var y := location.y;

  var proc:=GetGlobalProperty("#OreCorePointManagerPID");
  var pid:=getprocess(proc);

  var k := struct;
  k.+sk :=GetEffectiveskill(sk,45);
  k.+x := x;
  k.+y := y;
  k.+type := EVID_CHECK_SPOT;
  k.+source := getprocess(getpid());
  pid.sendevent(k);
  return wait_for_event(10);

endfunction
and in Orecore.src

Code: Select all

function GenerateNewOreType(src)
print("SRC!!! -"+src);
Print("Generating new oretype !");
var rnum;
var skill := ev.sk; //that line 


if((skill >= 1) && (skill <15))
rnum:=1;
elseif((skill >= 15) && (skill <20))
rnum:=2;
elseif((skill >= 20) && (skill <25))
rnum:=3;
elseif((skill >= 25) && (skill <30))
rnum:=4;
elseif((skill >= 30) && (skill <35))
rnum:=5;
elseif((skill >= 35) && (skill <40))
rnum:=6;
elseif((skill >= 40) && (skill <45))
rnum:=7;
elseif((skill >= 45) && (skill <50))
rnum:=8;
elseif((skill >= 50) && (skill <55))
rnum:=9;
elseif((skill >= 55) && (skill <60))
rnum:=10;
elseif((skill >= 60) && (skill <65))
rnum:=11;
elseif((skill >= 65) && (skill <70))
rnum:=12;
elseif((skill >= 70) && (skill <75))
rnum:=13;
elseif((skill >= 75) && (skill <80))
rnum:=14;
elseif((skill >= 80) && (skill <84))
rnum:=15;
elseif((skill >= 84) && (skill <88))
rnum:=16;
elseif((skill >= 88) && (skill <91))
rnum:=17;
elseif((skill >= 91) && (skill <94))
rnum:=18;
elseif((skill >= 94) && (skill <95))
rnum:=19;
elseif((skill >= 95) && (skill <97))
rnum:=20;
elseif((skill >= 97) && (skill <105))
rnum:=21;
elseif((skill >= 105) && (skill <120))
rnum:=22;
elseif((skill >= 120) && (skill <125))
rnum:=28;
elseif (skill>=130)
rnum:=30;
endif
Print("Rnum is "+rnum);
return(random(rnum)+1);

endfunction
Big THnx for all who helped to find answer of my problem
Post Reply